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。
接下来我们就研究一下他们结构。
![](http://dl.iteye.com/upload/attachment/500460/b76b74dd-6206-3f66-a4dd-31b2cb494593.png)
另外一种做法就是将ViewAnimator的管理责任交由TabContentActivity,我先姑且像上图一样实现。但但是,我发现了一个问题,如果想上图那样实现,TabContentActivity将会承担很多View要处理的任务,比如监听按钮事件等,这样会让TabContentActivity很臃肿,哎,那就扩展吧,让View的控制权私奔,架空TabContentActivity,引入ViewController。扩展后是这个样子滴:
![](http://dl.iteye.com/upload/attachment/500465/091077d1-68f5-3d1f-9552-c6989a7c072f.png)
是不是感觉好一点儿?我偷偷加了一个ViewStack,接替ViewAnimator的位置。
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0050/0460/b76b74dd-6206-3f66-a4dd-31b2cb494593-thumb.png)
- 大小: 24.1 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0050/0465/091077d1-68f5-3d1f-9552-c6989a7c072f-thumb.png)
- 大小: 33.7 KB
分享到:
相关推荐
这个"Android Tab控件使用的最简纯净Demo"是一个专为计算机专业学生毕业设计准备的源码示例,旨在帮助他们理解和掌握Android平台上的Tab布局实现。下面,我们将详细探讨这个Demo中的关键知识点。 首先,Tab布局在...
这个程序名为“HospitalHealthSystem”,它展示了基础的WinForm应用程序设计和架构,适合初学者进行学习和实践。 首先,让我们了解WinForm。Windows Forms是.NET Framework提供的一种用于构建桌面应用程序的UI框架...
为保证Tab切换的流畅性,开发者需要对内存管理进行优化,避免内存泄漏。同时,对于大容量数据的加载,可以使用懒加载策略,只在需要时加载内容,以减少初始加载时间。 8. **个性化设置** 部分高级用户可能希望...
标题中的“一个简单的多TAB的IE内核浏览器源码”是指一种基于Internet Explorer(IE)渲染引擎的浏览器实现,它支持多个标签页同时打开。在软件开发领域,尤其是Web浏览器开发中,多标签功能是非常常见且重要的特性...
通常我们会为每个Tab创建一个对应的Indicator View,并在页面切换时更新其状态。 6. **事件处理**: - 当用户滑动时,需要更新Tab的选中状态,同时也要同步ViewPager的页面。可以通过重写`OnPageChangeListener`...
1.设计简单。大部分界面和部分功能都在后台服务器实现。 2.界面炫丽。使用网页可以达到很炫的效果,显示格式也非常好控制。 3.修改方便。基本上只需修改网页就可以了。 4.可扩展性强。一个设计好的浏览器可以使用...
在VC++编程环境中,MFC(Microsoft Foundation Classes)是一个强大的库,它为Windows应用程序开发提供了丰富的功能,尤其在用户界面设计方面。MFC基于面向对象的设计,极大地简化了Windows API的使用,使得开发者...
"安卓底部自定义tab切换"是一个针对这个需求的源码实现,旨在提供一种简单易用的方法,特别适合初学者理解和实践。下面将详细介绍这个主题的相关知识点。 1. **BottomNavigationView**:这是安卓官方支持库中提供的...
总的来说,使用PowerPoint 2021的SmartArt功能绘制组织架构是一种简单而有效的方法,可以帮助非设计师快速创建出专业级别的组织结构图。通过灵活地调整图形样式、颜色和动画,你可以定制出符合自己需求的组织架构...
1. **MFC(Microsoft Foundation Classes)框架**:MFC是微软提供的一个C++类库,用于构建Windows应用程序,包括文档/视图架构,它使得实现复杂的用户界面变得相对简单。 2. **文档/视图架构**:在MFC中,文档...
在Android应用开发中,底部菜单Tab(Bottom Navigation)是一种常见的用户界面设计,它允许用户在多个顶级导航场景间切换,通常包含3到5个图标标签。本教程将深入讲解如何在Android项目中实现底部菜单Tab的三种方法...
总的来说,"bootstrap-mvc后台简单界面"是一个结合了Bootstrap的响应式设计和MVC架构优势的后台管理系统,适用于快速构建管理界面,同时通过"ace-tab"提供了高级的代码编辑功能,增强了后台系统的实用性。...
案例篇中提供了实际操作案例,包括简单的登录界面和Tab页签控件设计,帮助读者将所学知识应用到实际中。 最后的秘笈篇为读者提供了一些实用技巧,包括解决中文输入法问题、超快速移动工作区、穿透控件选取下层控件...
- **目标群体**:面向UX/UI设计师、业务分析师、信息架构师、可用性专家和产品经理等。 - **核心价值**:Axure能够帮助设计者快速制作出线框图和原型,并通过这些原型与客户沟通交流,确认需求,同时还能自动生成...
3. **Tab切换**:Tab切换是UI设计中的一种常见布局方式,用于组织多个相关但相对独立的视图。在小程序中,可以通过`<navigator>`组件创建Tab按钮,结合`wx:if`或`wx:elif`指令控制不同页面的显示。在`.json`配置文件...