`
fancybiy
  • 浏览: 7920 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

为Tab设计的简单架构

阅读更多

Hv a rest at first~


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

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


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


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

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

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

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


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

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


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



 是不是感觉好一点儿?我偷偷加了一个ViewStack,接替ViewAnimator的位置。

 

  • 大小: 24.1 KB
  • 大小: 33.7 KB
分享到:
评论

相关推荐

    Android Tab控件使用的最简纯净Demo-IT计算机-毕业设计.zip

    这个"Android Tab控件使用的最简纯净Demo"是一个专为计算机专业学生毕业设计准备的源码示例,旨在帮助他们理解和掌握Android平台上的Tab布局实现。下面,我们将详细探讨这个Demo中的关键知识点。 首先,Tab布局在...

    winform导航菜单,多窗口tab 源码程序

    这个程序名为“HospitalHealthSystem”,它展示了基础的WinForm应用程序设计和架构,适合初学者进行学习和实践。 首先,让我们了解WinForm。Windows Forms是.NET Framework提供的一种用于构建桌面应用程序的UI框架...

    新浪微博Tab

    为保证Tab切换的流畅性,开发者需要对内存管理进行优化,避免内存泄漏。同时,对于大容量数据的加载,可以使用懒加载策略,只在需要时加载内容,以减少初始加载时间。 8. **个性化设置** 部分高级用户可能希望...

    一个简单的多TAB的IE内核浏览器源码

    标题中的“一个简单的多TAB的IE内核浏览器源码”是指一种基于Internet Explorer(IE)渲染引擎的浏览器实现,它支持多个标签页同时打开。在软件开发领域,尤其是Web浏览器开发中,多标签功能是非常常见且重要的特性...

    自定义的带tab的可左右滑动的viewpager

    通常我们会为每个Tab创建一个对应的Indicator View,并在页面切换时更新其状态。 6. **事件处理**: - 当用户滑动时,需要更新Tab的选中状态,同时也要同步ViewPager的页面。可以通过重写`OnPageChangeListener`...

    基于QtWebkit的嵌入式bs架构设计.doc

    1.设计简单。大部分界面和部分功能都在后台服务器实现。 2.界面炫丽。使用网页可以达到很炫的效果,显示格式也非常好控制。 3.修改方便。基本上只需修改网页就可以了。 4.可扩展性强。一个设计好的浏览器可以使用...

    vc++ MFC 界面设计编程 各种控件设计,包括树控件,视图控件,静态文本,按钮控件,旋转控件,组合狂,tab控件等等

    在VC++编程环境中,MFC(Microsoft Foundation Classes)是一个强大的库,它为Windows应用程序开发提供了丰富的功能,尤其在用户界面设计方面。MFC基于面向对象的设计,极大地简化了Windows API的使用,使得开发者...

    安卓底部自定义tab切换

    "安卓底部自定义tab切换"是一个针对这个需求的源码实现,旨在提供一种简单易用的方法,特别适合初学者理解和实践。下面将详细介绍这个主题的相关知识点。 1. **BottomNavigationView**:这是安卓官方支持库中提供的...

    用PPT2021绘制组织架构.docx

    总的来说,使用PowerPoint 2021的SmartArt功能绘制组织架构是一种简单而有效的方法,可以帮助非设计师快速创建出专业级别的组织结构图。通过灵活地调整图形样式、颜色和动画,你可以定制出符合自己需求的组织架构...

    vc文档分割,带有Tab

    1. **MFC(Microsoft Foundation Classes)框架**:MFC是微软提供的一个C++类库,用于构建Windows应用程序,包括文档/视图架构,它使得实现复杂的用户界面变得相对简单。 2. **文档/视图架构**:在MFC中,文档...

    底部菜单Tab实现

    在Android应用开发中,底部菜单Tab(Bottom Navigation)是一种常见的用户界面设计,它允许用户在多个顶级导航场景间切换,通常包含3到5个图标标签。本教程将深入讲解如何在Android项目中实现底部菜单Tab的三种方法...

    bootstarp-mvc后台简单界面

    总的来说,"bootstrap-mvc后台简单界面"是一个结合了Bootstrap的响应式设计和MVC架构优势的后台管理系统,适用于快速构建管理界面,同时通过"ace-tab"提供了高级的代码编辑功能,增强了后台系统的实用性。...

    Axure 快速原型设计 Axure Rapid Prototyping

    案例篇中提供了实际操作案例,包括简单的登录界面和Tab页签控件设计,帮助读者将所学知识应用到实际中。 最后的秘笈篇为读者提供了一些实用技巧,包括解决中文输入法问题、超快速移动工作区、穿透控件选取下层控件...

    小程序源码(无后台)_下拉刷新,tab切换.rar

    3. **Tab切换**:Tab切换是UI设计中的一种常见布局方式,用于组织多个相关但相对独立的视图。在小程序中,可以通过`<navigator>`组件创建Tab按钮,结合`wx:if`或`wx:elif`指令控制不同页面的显示。在`.json`配置文件...

    数据库设计和开发规范

    - **数据架构命名**:除了系统定义的数据架构外,新建架构采用Pascal样式命名,格式为 [架构名]。例如:`HumanResources` 和 `Production`。 - **数据表命名**:采用Pascal样式命名,格式为 [系统功能]+’_’+[表名]...

Global site tag (gtag.js) - Google Analytics