android类微信界面的实现

351 阅读1分钟

这次项目主要是实现一个类微信界面,在老师课上的逐步操作下以基本可以实现。主要创建四个tab页面,实现仿微信主页的功能,然后使用layout和fragment对控件进行监听。

@@N0UX13(T~42KAZX3AROWL.png

![K[)OTBIV`V3V2W3{1O11LK.png

![94ZRK(8C49BSUVTNVK{W3E.png

5Z)Q)PF7TAS2)`4_0QBSO.png

![]0(5JK~H97OKBXDU6`(8$0.png

EYYB8CAMIV4V_{UBCZS5)`3.png

项目的运行使用了夜神模拟器连接android studio首先下载夜神模拟器,然后cmd进入安装目录下的bin目录,输入nox_adb.exe connect 127.0.0.1:62001。为了方便新建一个文档输入nox_adb.exe connect 127.0.0.1:62001并改名connect.bat点击即可连接。

ZTW((`ROL0ZKHVO7L4G8I.png在AS界面内可以看到模拟器设置的机型。运行结果如下:

![$TY]DM9ZOZ9GPRU7`}72WU3.png](p9-juejin.byteimg.com/tos-cn-i-k3…?)

5C@UZQ%0L92B2YSFY}JVD.png

LUW04DX)DMKSTBGF{1T`O87.png

GR%8F_~F63XG$%B)KI)}0W0.png

关键代码:

package com.example.mywechat;

import androidx.appcompat.app.AppCompatActivity;
import android.app.Fragment;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.ImageButton;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private LinearLayout mTabWeixin;
    private LinearLayout mTabFrd;
    private LinearLayout mTabContact;
    private LinearLayout mTabSettings;

    private ImageButton mImgWeixin;
    private ImageButton mImgFrd;
    private ImageButton mImgContact;
    private ImageButton mImgSettings;

    private Fragment mTab01= new weixinFragment();
    private Fragment mTab02= new frdFragment();
    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();
        initFragment();
        initevent();
        selectfragment(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(){
        mTabWeixin=(LinearLayout)findViewById(R.id.id_tab_weixin);
        mTabFrd=(LinearLayout)findViewById(R.id.id_tab_frd);
        mTabContact=(LinearLayout)findViewById(R.id.id_tab_contact);
        mTabSettings=(LinearLayout)findViewById(R.id.id_tab_settings);

        mImgWeixin=(ImageButton)findViewById(R.id.id_tab_weixin_img);
        mImgFrd=(ImageButton)findViewById(R.id.id_tab_frd_img);
        mImgContact=(ImageButton)findViewById(R.id.id_tab_contact_img);
        mImgSettings=(ImageButton)findViewById(R.id.id_tab_settings_img);
    }
    private  void initevent(){
        mTabWeixin.setOnClickListener(this);
        mTabFrd.setOnClickListener(this);
        mTabContact.setOnClickListener(this);
        mTabSettings.setOnClickListener(this);
    }
    private void hidefragment(FragmentTransaction transaction){
        transaction.hide(mTab01);
        transaction.hide(mTab02);
        transaction.hide(mTab03);
        transaction.hide(mTab04);

    }
    private void selectfragment(int i){
        FragmentTransaction transaction=fm.beginTransaction();
        hidefragment(transaction);
        switch (i){
            case 0:
                transaction.show(mTab01);
                mImgWeixin.setImageResource(R.drawable.tab_weixin_pressed);
                break;
            case 1:
                transaction.show(mTab02);
                mImgFrd.setImageResource(R.drawable.tab_find_frd_pressed);
                break;
            case 2:
                transaction.show(mTab03);
                mImgContact.setImageResource(R.drawable.tab_address_pressed);
                break;
            case 3:
                transaction.show(mTab04);
                mImgSettings.setImageResource(R.drawable.tab_settings_pressed);
                break;
            default:
                break;
        }
        transaction.commit();
    }

    @Override
    public void onClick(View v) {

        resetImgs();
        switch (v.getId()){
            case R.id.id_tab_weixin:
                selectfragment(0);
                break;
            case R.id.id_tab_frd:
                selectfragment(1);
                break;
            case R.id.id_tab_contact:
                selectfragment(2);
                break;
            case R.id.id_tab_settings:
                selectfragment(3);
                break;
            default:
                break;
        }

    }
    public void resetImgs(){
        mImgWeixin.setImageResource(R.drawable.tab_weixin_normal);
        mImgFrd.setImageResource(R.drawable.tab_find_frd_normal);
        mImgContact.setImageResource(R.drawable.tab_address_normal);
        mImgSettings.setImageResource(R.drawable.tab_settings_normal);
    }
}

源码地址:(gitee.com/life-rsrs/m…)