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

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

 

          

 

 

 

 

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

 

    对于一些自然和漂亮的设计,其实类图就说明了一切。其中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资料共享
  4. Android之Service学习篇二:Service启动方式之boundService
  5. 如何使用Android(安卓)SDK开发Android应用?
  6. Android源码笔记--SystemUI
  7. Android系统的体系结构、开发语言及源码结构
  8. Android中可以做的两件坏事---破解锁屏密码和获取Wifi密码
  9. Android内核开发:理解和掌握repo工具

随机推荐

  1. JavaScript权威设计--jQuery,Ajax.animat
  2. 如何在命令中传递对象参数?
  3. Java中的两种XML解析技术DOM和SAX
  4. 云星数据---Apache Flink实战系列(精品版
  5. 正在学习C#的新手请教:ASP.NET、HTML5, ja
  6. java 中 数值不超过3万. 用short好 还是i
  7. jbpm在rest API中修改 task Variable
  8. Java日志框架——查看“完整的执行的SQL
  9. JavaScript与WebAssembly进行比较
  10. 20165111 实验一Java开发环境的熟悉1,2