更新内容: 解决状态栈的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
五. 加了几张运行效果图