安卓类微信项目

安卓类微信项目

安卓项目----微信简单界面

一.开发所需软件:Android studio

二.功能说明:
类似微信的初始化界面,四个tabbar,点击显示不同的内容。分别为微信消息页面,朋友页面,通讯录页面,设置页面。使用framelayout简单的布局,用来显示每次我选择一个就会是一个新的界面和新的内容。

三.文档结构:
安卓类微信项目

如图包括:

  • top模块:包含微信应用名
  • bottom模块:包含微信、朋友、通讯录、设置按钮
  • fragment模块:包含4个不同的页面
  • main模块:将top-fragment-bottom组合在一起

安卓类微信项目
如图包括:

  • contactFragment 通讯录的继承fragment类
  • friendFragment朋友的继承fragment类
  • settingFragment设置的继承fragment类
  • weixinFragment微信的继承fragment类
  • MainActivity活动来实现监听函数

四.核心代码:
最主要的难点就是java代码与xml文件的互通和对点击事件的监听。

public class MainActivity extends Activity implements View.OnClickListener {

    private  LinearLayout xmlweixin;
    private  LinearLayout xmlfrd;
    private  LinearLayout xmlcontact;
    private  LinearLayout xmlsettings;

    private ImageButton xmlimageweixin;
    private ImageButton xmlimagefrd;
    private ImageButton xmlimagecontact;
    private ImageButton xmlimagesettings;

    private Fragment mTab01=new weixinFragment();
    private Fragment mTab02=new friendFragment();
    private Fragment mTab03=new contactFragment();
    private Fragment mTab04=new settingsFragment();

    private FragmentManager fm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        initView();
        initEvent();
        initFragment();
        setSelect(0);
    }

    private void initFragment(){
        fm = getFragmentManager();
        FragmentTransaction transaction= fm.beginTransaction();
        transaction.add(R.id.id_content,mTab01);
        transaction.add(R.id.id_content,mTab02);
        transaction.add(R.id.id_content,mTab03);
        transaction.add(R.id.id_content,mTab04);
        transaction.commit();
    }

    private void initView(){
        xmlweixin=(LinearLayout) findViewById(R.id.id_tab_weixin);
        xmlfrd=(LinearLayout) findViewById(R.id.id_tab_frd);
        xmlcontact=(LinearLayout) findViewById(R.id.id_tab_contact);
        xmlsettings=(LinearLayout) findViewById(R.id.id_tab_settings);

        xmlimageweixin=(ImageButton) findViewById(R.id.id_tab_weixin_img);
        xmlimagefrd=(ImageButton) findViewById(R.id.id_tab_frd_img);
        xmlimagecontact=(ImageButton) findViewById(R.id.id_tab_contact_img);
        xmlimagesettings=(ImageButton) findViewById(R.id.id_tab_settings_img);
    }
    private void setSelect(int i) {
        FragmentTransaction transaction=fm.beginTransaction();
        hideFragment(transaction);
        switch (i){
            case 0:
                Log.d("SetSelect","1");
                transaction.show(mTab01);
                xmlimageweixin.setImageResource(R.drawable.tab_weixin_pressed);
                break;
            case 1:
                transaction.show(mTab02);
                xmlimagefrd.setImageResource(R.drawable.tab_find_frd_pressed);
                break;
            case 2:
                transaction.show(mTab03);
                xmlimagecontact.setImageResource(R.drawable.tab_address_pressed);
                break;
            case 3:
                transaction.show(mTab04);
                xmlimagesettings.setImageResource(R.drawable.tab_settings_pressed);
                break;
            default:
                break;
        }
        transaction.commit();
    }

    private void hideFragment(FragmentTransaction transaction){
        transaction.hide(mTab01);
        transaction.hide(mTab02);
        transaction.hide(mTab03);
        transaction.hide(mTab04);
    }

    private void initEvent(){
        xmlweixin.setOnClickListener(this);
        xmlfrd.setOnClickListener(this);
        xmlcontact.setOnClickListener(this);
        xmlsettings.setOnClickListener(this);
    }


    @Override
    public void onClick(View view) {
        Log.d("OnClick","1");
        resetImgs();
        switch(view.getId()){
            case R.id.id_tab_weixin:
                Log.d("OnClick","2");
                setSelect(0);
                break;
            case R.id.id_tab_frd:
                setSelect(1);
                break;
            case R.id.id_tab_contact:
                setSelect(2);
                break;
            case R.id.id_tab_settings:
                setSelect(3);
                break;
            default:
                break;
        }
    }

    public void resetImgs(){
        xmlimageweixin.setImageResource(R.drawable.tab_weixin_normal);
        xmlimagefrd.setImageResource(R.drawable.tab_find_frd_normal);
        xmlimagecontact.setImageResource(R.drawable.tab_address_normal);
        xmlimagesettings.setImageResource(R.drawable.tab_settings_normal);
    }
}

其它代码可以到gitee仓库查看,地址在文档后面。

五.运行界面:
安卓类微信项目
安卓类微信项目
安卓类微信项目
安卓类微信项目

六.源码的代码仓库地址:
gitee仓库地址

上一篇:【Spring】Transation:源码执行流程(上)准备阶段


下一篇:mysql事务隔离级别和spring Transaction事务传播