对于手机开发,我一直坚持的是“用iPhone的方式开发iPhone应用,用Android的方式开发Android应用”。但如何去把握iPhone或者Android的方式呢?在iPhone开发时可能需要看大量Apple文档。而Android在看文档的同时还可以看看源码。这源码中有时可以发现一些内部实现加深理解,有时可以受到某些可以在应用中使用的启发。总之源码是一个需要去发掘的“矿场”,时而不时地都会发现一些“金子”。

     Android的TabHost默认是顶部显示的,而目前很多Android的应用又都是采用和iPhone类似的底部Tab设计。实现的方法很多,但我面对该问题的时候,本能想到的就是想借鉴下TabHost的设计,看看是否可以动些手脚。

 

Android源码分析:TabHost_第1张图片           Android源码分析:TabHost_第2张图片

 

 

 

 

分析源码后,总结其设计如下:

Android源码分析:TabHost_第3张图片

 

    对于一些自然和漂亮的设计,其实类图就说明了一切。其中TabHost包括一个用于显示内容的FrameLayout以及排布各个Tab指示的TabWidget,其中各个Tab的规格通过TabSpec指定。由于TabHost的Tab以及各个Tab的内容有不同的风格,因此在TabSpec中定义中IndicatorStrategy和ContentStrategy。其中IndicatorStrategy用于指定Tab指示的生成方式,实现类分别有LabelIndicatorStratey、LabelAndIconIndicatorStratey和ViewIndicatorStratey。LabelIndicatorStratey用于纯文本的Tab指示,LabelAndIconIndicatorStratey用于文本+图标的Tab指示,而ViewIndicatorStratey则是将指定的View作为Tab指示。对于Tab的内容,通过ContentStrategy也可以指定多种形式的内容获取方式。

 

如果想有点更真实的感觉,建议去查看下源码~!

更多相关文章

  1. 70个具有商业实战性的Android源码(应用游戏都有)
  2. Android第十八课 VS源码文件导入Android工程 中文乱码
  3. Android源码笔记--SystemUI
  4. Android系统的体系结构、开发语言及源码结构
  5. android的学习记录-包括android的安装、如何在eclipse查看SDK源
  6. Android ADT,SDK的安装,让人烦恼的在线方式!
  7. Android 源码分析-Dalvik 虚拟机创建过程

随机推荐

  1. 手把手带你爬天猫,获取杜蕾斯评论数据
  2. Oracle19c_cdb数据库自动安装部署脚本
  3. 当谈论迭代器时,我谈些什么?
  4. Python 之父撰文回忆:为什么要创造 pgen
  5. 从 Python 之父的对话聊起,关于知识产权、
  6. Python 为了提升性能,竟运用了共享经济
  7. 如何美观地打印 Python 对象?这个标准库可
  8. Python 浮点数的冷知识
  9. 金牌厨师Pandas:听说Excel处理数据分行快
  10. 由浅入深:Python 中如何实现自动导入缺失