Android之ActivityGroup实现Tab功能 (转)
16lz
2021-01-24
android.app包中含有一个ActivityGroup类,该类是Activity的容器,可以包含多个嵌套进来的Activitys,这篇文章就是借助ActivityGroup可以嵌套Activity的功能来实现Tab功能。tab这种UI在很多的移动应用中可以看到,包括android、iphone、window phone7等移动终端上都有这样的应用,Tab这种UI方式具有小视图大容量的特点。
首先,从SDK中doc文档中都可以获知,ActivityGroup类的父类是Activity(见下图),也就是说二者具有相同的接口和生命周期,同Activity一样,也有onCreate()、onPause()等函数可供我们重载。
ActivityGroup中有两个public方法(下图):ActivityGroup中可以调用getLocalActivityManage()方法获取LocalActityManage来管理Activity。
ActivityGroup实现的tab功能的效果图如下。
先看一下java代码:
public class MainView extends ActivityGroup {@SuppressWarnings("unused")private LinearLayout bodyView,headview;private LinearLayout one, two, three, four;private int flag = 0; // 通过标记跳转不同的页面,显示不同的菜单项 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.view_main); initMainView();// 显示标记页面showView(flag);one.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubflag = 0;showView(flag);}});two.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubflag = 1;showView(flag);}});three.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubflag = 2;showView(flag);}});four.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubflag = 3;showView(flag);}}); } /* * 初始化主界面 */ public void initMainView() {headview=(LinearLayout) findViewById(R.id.head);bodyView=(LinearLayout) findViewById(R.id.body);one=(LinearLayout) findViewById(R.id.one);two=(LinearLayout) findViewById(R.id.two);three=(LinearLayout) findViewById(R.id.three);four=(LinearLayout) findViewById(R.id.four);} // 在主界面中显示其他界面public void showView(int flag) {switch (flag) {case 0:bodyView.removeAllViews();View v = getLocalActivityManager().startActivity("one",new Intent(MainView.this, OneView.class)).getDecorView();one.setBackgroundResource(R.drawable.frame_button_background);two.setBackgroundResource(R.drawable.frame_button_nopressbg);three.setBackgroundResource(R.drawable.frame_button_nopressbg);four.setBackgroundResource(R.drawable.frame_button_nopressbg);bodyView.addView(v);break;case 1:bodyView.removeAllViews();bodyView.addView(getLocalActivityManager().startActivity("two",new Intent(MainView.this, TwoView.class)).getDecorView());one.setBackgroundResource(R.drawable.frame_button_nopressbg);two.setBackgroundResource(R.drawable.frame_button_background);three.setBackgroundResource(R.drawable.frame_button_nopressbg);four.setBackgroundResource(R.drawable.frame_button_nopressbg);break;case 2:bodyView.removeAllViews();bodyView.addView(getLocalActivityManager().startActivity("three", new Intent(MainView.this, ThreeView.class)).getDecorView());one.setBackgroundResource(R.drawable.frame_button_nopressbg);two.setBackgroundResource(R.drawable.frame_button_nopressbg);three.setBackgroundResource(R.drawable.frame_button_background);four.setBackgroundResource(R.drawable.frame_button_nopressbg);break;case 3:bodyView.removeAllViews();bodyView.addView(getLocalActivityManager().startActivity("four", new Intent(MainView.this, FourView.class)).getDecorView());one.setBackgroundResource(R.drawable.frame_button_nopressbg);two.setBackgroundResource(R.drawable.frame_button_nopressbg);three.setBackgroundResource(R.drawable.frame_button_nopressbg);four.setBackgroundResource(R.drawable.frame_button_background);break;default:break;}}}
更多相关文章
- Android(安卓)基于google Zxing实现二维码、条形码扫描,仿微信二
- 深入探讨Android----必不可少的高级功能
- 浅析Android(安卓)M新功能Adoptable Storage Devices(适配的存储
- android 开发规范
- android 服务的应用,在Activity中实现背景音乐播放
- Android(安卓)实现定时闹铃功能
- android滑动组件嵌套一般思路
- 阿里Android开发手册读后感-上篇
- 使用Vitamio打造自己的Android万能播放器(3)——本地播放(主界面、