当我们需要实现多标签页程序的时候,相信很多人首先会想到用TabActivity来解决。没错,TabActivity就是用来解决多标签程序的。但其实,我们真的有必要一定要用TabActivity来解决吗?尤其是当多标签页程序里面嵌套的子Activity又是多标签的时候。这里我要介绍的是我比较钟爱的ViewFlipper。

实现多标签页程序的时候,通常都会使用TabHost,然后把TabWidget的visibility属性设置为gone(很多人都觉得原生的tab太丑,且现在大多数的UI都在模仿iPhone上面的UI,tab放在底部),而TabWidget的功能则用RadioGroup来实现。用TabActivity来实现的程序易于维护,因为每个页面都分别到了每个子Activity里面实现。但是可能有些同志会想当然的看到多标签就用TabActivity, 如果TabActivity里面的子Activity又继承了TabActivity,在监听按键的时候系统将不知道该返回到哪层,导致出错,这样的结果显然不是我们期望看到的。如果需要在子Activity里面实现多标签,我们可以用ViewFlipper来实现。布局代码大致如下:

<RadioGroup> </RadioGroup><ViewFlipperandroid:animationCache="false"android:alwaysDrawnWithCache="false" android:drawingCacheQuality="high"android:persistentDrawingCache="none"android:layout_width="fill_parent" android:layout_height="fill_parent"android:inAnimation="@anim/push_in" android:outAnimation="@anim/push_out"><include layout="@layout/xxx0" /><include layout="@layout/xxx1" /><include layout="@layout/xxx2" /></ViewFlipper>

在子Activity里面用ViewFlipper来实现页面的切换显然要比再继续继承TabActivity明智得多,嵌套越深越是容易出现问题。

ViewFlipper比较适用于布局切换时动画效果要求较高(inAnimation和outAnimation分别控制下一个页面的进入动画和当前页面的退出动画),各个布局间传递数据比较频繁。用ViewFlipper实现时,很显然所有的代码都是在一个Activity里面实现了,既然都在一个Activity里面,各个页面间的数据传递当然比在Activity间用Intent或者Broadcast来传递数据方便的多,但所有页面逻辑代码写在一个Activity里面带来的问题显然就是可维护性不好。

一个页面需要用一个Activity来实现,在我看来,这不是什么准则,如果逻辑代码不是很复杂,我更倾向于把所有页面逻辑代码写在一个Activity里面(关键是我喜欢控制页面的进出动画效果),毕竟大多数手机程序也大不到哪去,维护起来也不是什么难事。但是如果逻辑代码很复杂,而且需要很好的扩展性,最好还是分开来实现,这样后期的维护和升级也相对更轻松些,毕竟一个产品能否成功,升级和维护还是占很大的比例的。

转载于:https://www.cnblogs.com/neilyo/archive/2011/11/17/2252089.html

[转]ViewFlipper实现多标签切换相关推荐

  1. html5 css3 卡片切换,HTML5之纯CSS3实现的tab标签切换

    HTML5的运用之纯CSS3实现的tab标签切换 CSS3代码实现的tab标签切换 *{padding:0px;margin:0px;} #tab{margin:20px;20px;position: ...

  2. html tab切换jquery,jQuery版Tab标签切换

    鼠标移入Tab的时候会有一定的延时才会切换到相应的项,防止用户不经意的鼠标操作,点击相应的项也可以切换 效果图: 源代码: Tab标签切换 body{ background:#fff;} *{ mar ...

  3. jQuery bind事件练习及tab标签切换的实现

    1.bind事件 jQuery部分代码: <script type="text/javascript"> $(document).ready(function(){   ...

  4. jQuery插件_SuperSlide插件(焦点图切换、标签切换、多个slide组合)

    SuperSlidev1.2 SuperSlide 是致力于实现网站统一特效调用的函数,能解决大部分标签切换.焦点图切换等效果,还能多个slide组合创造更多的效果.(兼容ie内核(包括无敌的ie6) ...

  5. android标签切换卡,Android切换卡TabWidget用法示例

    本文实例讲述了Android切换卡TabWidget用法.分享给大家供大家参考,具体如下: Tab选项卡类似与电话本的界面,通过多个标签切换不同的内容,要实现这个效果,首先要知道TabHost,它是一 ...

  6. 前端(jQuery)(10)-- jQuery标签切换

    本部分内容之后补 1.标签切换布局实现 掌握如何通过使用边框技巧完成实例效果 2.标签切换具体实现 使用 jQuery 完成动态效果,包含添加事件,对鼠标事件做处理,添加延时功能,提供更好的用户体验. ...

  7. JS 实现 Tab标签切换功能

    Tab标签切换 效果图: HTML部分: <div class="wrap">     <ul id="tag">       < ...

  8. Ubuntu下的终端多标签切换快捷键

    转自: Ubuntu下的终端多标签切换快捷键 - "温故而知新" - 博客园 https://www.cnblogs.com/hester/p/5570157.html 储备知识: ...

  9. 实现JS标签切换效果【CSS图片切换】

    运行代码尝试,我把整篇的CSS文件内容都弄上来了,难得去找具体内容了,反正能得到效果就可以了. 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

最新文章

  1. 数据库删除记录核心语句 解读 (vb6.0)
  2. 微信小程序:字体保持大小
  3. 如何用html绘制阴影图形,HTML5 给图形绘制阴影
  4. ADO winform注册
  5. addeventlistener事件第三个参数 passive_JS DOM 事件流、事件冒泡
  6. 计算机翻译字串符,字符的计算机处理和显示 外文翻译.doc
  7. python画玫瑰图_python windrose(风玫瑰图)
  8. 一个正常80后收藏夹中的精品网站
  9. 匹配数字、大小写字母、汉字、-、_而且不能以_开头或结尾
  10. 【科技视野】微信小程序真的是App的终结者?
  11. ArcGIS更多颜色调配
  12. vue项目兼容IE浏览器,判断IE11以下,则提示浏览器版本过低,更新浏览器页面
  13. C++性能之战(1)--深入到汇编看++i、i++、i+=1、i=i+1的区别
  14. 安卓手机能用的Mac地址修改器和教程
  15. 【ACL2021】ChineseBERT:香侬科技提出融合字形与拼音信息的中文预训练模型
  16. 【凯斯西储大学数据集介绍(CWRU)】
  17. OpenWrt LuCI 汉化指南
  18. GitHub Bitbucket GitLab Coding 的对比分析
  19. 恒压板框过滤实验数据处理_马鞍山板框式压滤机
  20. 2023-4-4 富文本编辑模糊查询

热门文章

  1. MCE| 熬夜导致DNA损伤、致癌
  2. 计算机网络自顶向下第四章:网络层
  3. 生活随记 - 5G时代安卓手机性能可以媲美苹果手机
  4. marplotlib坐标轴ax
  5. 香港途径巴黎转机至波哥大
  6. 由于wps没有卸载干净导致office总是加载配置问题的解决方法
  7. UWP开发:获取用户当前所在的网络环境(WiFi、移动网络、LAN…)
  8. mt4中php是什么意思,MT4编程报警问题
  9. 设计模式读书笔记(三) Builder(建造者)模式
  10. 实验室计算机主机应关闭显示器一般不用关,实验室的计算机主机应关闭,显示器一般不用关闭...