对于手机开发,我一直坚持的是“用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. android输入法02:openwnn源码解析01—输入流程
  2. Android小项目之--电话与短信服务(附源码)
  3. windows下Android源码的分模块下载
  4. android视频桌面源码,酒店应用源码等
  5. 转android123 预防Android内存泄露
  6. 如何使用Android(安卓)SDK开发Android应用?
  7. Android(安卓)多个APK共享数据(Shared User ID)
  8. Android主题换肤 无缝切换
  9. android的消息处理机制(图+源码分析)——Looper,Handler,Message

随机推荐

  1. Android 在线视频播放器(Vitamio)
  2. 简单的使用腾讯X5内核浏览器替代Android
  3. Android targetSdkVersion了解一下
  4. Android设备FTP服务器搭建
  5. Android短信备份
  6. [Android]网页内图片点击查看大图/识别二
  7. Android中ConvenientBanner的使用
  8. no drawer view found with gravity RIGH
  9. Android(安卓)中CoordinatorLayout+AppBa
  10. Android 异步消息处理机制的几种实现