比TabActivity更灵活的工具栏实现方式

更新内容: 解决状态栈的bug,用标准栈实现 11.10 13:12

------------------------------------------------------------------------------------------------------------

 

一. 动机:

 

TabActivity的标签功能很方便,拿过来真接用,省时省力。但其功能限于标签,对于复杂灵活的应用它就力不从心了。

TabActivity有诸多限制,最难搞定的就是状态的回退(点击andorid特有的后退键),已及嵌套页面,它的痛不用我多说,用过它的人,痛过的人明白的。



二. 自实现工具栏框架:

 

继承ActivityGroup,大多框架功能一个类就可又搞定,当然为了零件化,可又搞成几个类。它的好处是

功能上TabActivity已有的基本都满足,而且更加的灵活,功能更强大,上面提及的功能都不难实现,当然是它灵活性的体现。



三. 简单的说明

1. 对状态的保存使用一个特殊的栈,用LinkedList而不是Stack,因为出栈操作比较特殊,出的不是最顶元素,LinkedList可又更灵活。


2. 工具栏的切换使用RadioGroup实现,点一次的选择操作实现上是一个单选操作,当然需要改变RadioGroup默认的样式(要像工具栏)


3. 对回退操作监听Activity的onKeyDown方法,对回退统一控制


4. 对框架外的业务Activity没有任何特殊的要求,唯一一点区别是在startActivity时使用框架提供的跳转


5. 代码实现参考了 新浪微博 和 京东商场 又及网上查找的资料



四. 代码Demo

 

有代码有真像,,可真接运行。

eclipse+android2.2环境 

 

下载地址:http://www.kuaipan.cn/index.php?ac=file&oid=162822210215221

 

密码:O5qfg2

 

五. 加了几张运行效果图

比TabActivity更灵活的工具栏实现方式

 

 

比TabActivity更灵活的工具栏实现方式

 

 

 

比TabActivity更灵活的工具栏实现方式

 

你可能感兴趣的:(android)