安卓类微信项目
安卓项目----微信简单界面
一.开发所需软件: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仓库地址