总体设计结构
- 四个Fragment 分别对应4个页面的内容,即四种水果
- 一个顶部的LinearLayOut 显示顶部内容
- 底部的4个标签,使用4个LinearLayOut 并且是横向布局
核心代码
一、MainActivity.java
1.initFragment() :初始化fragment,将四个fragment内容依次放入transation中
private void initFragment() {
fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.add(R.id.id_content, xj);
transaction.add(R.id.id_content, cz);
transaction.add(R.id.id_content, bl);
transaction.add(R.id.id_content, pt);
transaction.commit();
}
- initView():初始化view,将底部四个LinearLayout与四个fragment绑定
private void initView() {
mTabxj = (LinearLayout) findViewById(R.id.tab_x);
mTabcz = (LinearLayout) findViewById(R.id.tab_o);
mTabbl = (LinearLayout) findViewById(R.id.tab_b);
mTabpt = (LinearLayout) findViewById(R.id.tab_p);
mImgxj = (ImageButton)findViewById(R.id.x1);
mImgcz = (ImageButton)findViewById(R.id.o1);
mImgbl = (ImageButton)findViewById(R.id.b1);
mImgpt = (ImageButton)findViewById(R.id.p1);
}
3.hideFragment():隐藏四个Fragement
private void hideFragment(FragmentTransaction transaction) {
transaction.hide(xj);
transaction.hide(cz);
transaction.hide(bl);
transaction.hide(pt);
}
4.initEvent() :将监听范围从全屏减小至底部四个LinearLayout,减少内存消耗
private void initEvent() {
mTabxj.setOnClickListener(this);
mTabcz.setOnClickListener(this);
mTabbl.setOnClickListener(this);
mTabpt.setOnClickListener(this);
}
5.selectFragment(int i):使第i个LinearLayout的图表变亮
*/
private void selectFragment(int i) {
// 先将所有图标颜色还原
// resetImg();
FragmentTransaction transaction = fm.beginTransaction();
hideFragment(transaction);
switch (i) {
case 0:
transaction.show(xj);
mImgxj.setImageResource(R.drawable.x1);
break;
case 1:
transaction.show(cz);
mImgcz.setImageResource(R.drawable.o1);
break;
case 2:
transaction.show(bl);
mImgbl.setImageResource(R.drawable.b1);
break;
case 3:
transaction.show(pt);
mImgpt.setImageResource(R.drawable.p1);
break;
default:
break;
}
transaction.commit();
}
6.resetImg() :将未点击的图片按钮还原成原来的颜色
public void resetImg() {
mImgxj.setImageResource(R.drawable.x2);
mImgcz.setImageResource(R.drawable.o2);
mImgbl.setImageResource(R.drawable.b2);
mImgpt.setImageResource(R.drawable.p2);
}
运行结果展示