这个问题应该涉及到所有实现了Tab风格的应用的设计 android的SDK提供了TabHost,TabWidget控件和TabActivity来支持这种方式,但是我感觉限制比较大,就尝试使用ActivityGroup去做。 在布局中,总要设置一个导航的菜单栏,iphone的是放在下面的。 总体上的布局都是如此的,整体的布局一般是一个RelativeLayout,下面放一个width是fill_parent的菜单栏。 contain是一个容器,我自己用过很多,比如LinearLayout,ViewAnimator等等,后者支持动画,不过其实这样的布局,上面的内容有点动画,看起来会有点怪。 ActivityGroup里面有个非常重要的成员,它是负责subActivity管理的——LocalActivityManager,可以通过getLocalActivityManager()来获的。 来看一下这个成员有什么作用,当然从老农的博客里面可以去寻找这个类的中文API啦~ public Activity getCurrentActivity() 返回当前的activity,也就是状态是running的subActivity,也就是getAcitivity(getCurrentId())的实现 public String getCurrentId() 见上条 public void removeAllActivities() 销毁所有的subActivity public Activity getActivity(String id) 通过acitivityId找到这个group对应的Activity对象。 public Window destroyActivity(String id, boolean finish) 这个是负责结束某一个subActivity的,在每次我们开启一个新的activity的时候,往往给他一个activityId,然后我们就可以通过这个id去销毁他。 public Window startActivity(String id, Intent intent) 在当前的group里面运行一个新的subActivity,必须传入一个id去映射之,做为索引。这边的Intent和Activity里的Intent一样,我们也可以通过这个来传递参数。 这边有一个需要注意的就是subActivity的启动方式方面的问题: SingleTop和平时不同,举个例子:a启动b,b启动a,这时候在acitivity的栈里面有个就有了两个a,而在acitivityGroup管理下的SingleTop启动,则是a->b,再b->a,则不会有两个a,则是跳入a的时候call他的newIntent()方法 所以在这边如果你要复用这个界面,我个人觉得可以用singleTop,不仅可以保存它的状态,也可以把后续的操作放在onNewIntent(Intent) 里面,和onCreate区分开来。 给出一段示例代码: view plain
布局文件 如下 : view plain
如果我们要给他们加上跳转,怎么做呢? 一种做法是做在subActivity里面的: 在subActiivity里面获取 getParent() 则就是我们的ActivityGroup,然后通过这个来跳转。 比如在subActivity01里面按button01,跳转到subActivity02,我们可以这么写。 view plain
但是要做的通用点,则需要想办法了。 我个人的做法是在ActivityGroup里面注册一个receiver去监听跳转的信息,并且获取参数,我的参数全部封装在一个bundle里,这个是一个统一的格式,当然也可以用自己喜欢的方式。 view plain
当然你要注意在ActivityGroup里面去的onCreate去注册监听,和在onDestroy注销之。 view plain
|
ActivityGroup的应用以及跳转问题
最新推荐文章于 2015-03-30 16:25:18 发布