读书人

替Tab设计的简单架构

发布时间: 2012-09-01 09:33:02 作者: rapoo

为Tab设计的简单架构

替Tab设计的简单架构Hv a rest at first~


相信大家都了解android tab架构,在这里不多说。

假设对于tab有这样的需求,你会提出怎样的解决方案呢?


一堆tabs,每个tab中又有多个view来显示数据,可以在tabs以及views之间相互跳转,回退。


让我们来一步步分析这个需求:

一堆tabs,我把他们看作是一排抽屉。每个tab中又有多个view来显示数据,你会怎样让tab来管理这么多views呢?有人会想到频繁的更换layout来表现不同的视图,替Tab设计的简单架构这样的代价是不是有些大呢,我想到的是FrameLayout,你可以把它们看作是卡片,放在抽屉里,每次打开抽屉能看到最上面的view,是不是很轻松呢,假如用第一个方案你可以想象是什么场景。替Tab设计的简单架构可以在tabs以及views之间相互跳转,回退,喔,酷啊,魔法世界出现了,当你触碰卡片,下一个抽屉或卡片会自动蹦出来,不可思议,最好找一个魔法师来做这些事情,当然还需要一种魔咒来驱动魔法显灵。

好了到这里,一个场景出现了,一个魔法师挥舞着魔法棒指挥抽屉和卡片,我认为这样是合理的,你认为呢?

Sorry,故事扯远了,我们还是得现实一些,你们会想到怎样抽象这些对象呢?我是这样做的:


抽屉:暂且命名为TabContentActivity?(我用的是Intent的方式创建的tab)。一叠卡片:我想用ViewAnimator,还可以有动画,一举两得。魔法师:暂且定义一个类来表示他,NavigationManager。魔咒:我想用URI表示,比如action://{which tab?}/{which view?},给每个tab和view都命名一个tag。

接下来我们就研究一下他们结构。


替Tab设计的简单架构

另外一种做法就是将ViewAnimator的管理责任交由TabContentActivity,我先姑且像上图一样实现。但但是,我发现了一个问题,如果想上图那样实现,TabContentActivity将会承担很多View要处理的任务,比如监听按钮事件等,这样会让TabContentActivity很臃肿,哎,那就扩展吧,让View的控制权私奔,架空TabContentActivity,引入ViewController。扩展后是这个样子滴:


替Tab设计的简单架构
?是不是感觉好一点儿?我偷偷加了一个ViewStack,接替ViewAnimator的位置。

?

读书人网 >移动开发

热点推荐