android主题机制(一)

android的主题是一块很大的内容,从本文开始,将分几个阶段陆续将工作中遇到的一些相关经验、内容呈现给大家。

第一部分,我们来聊一下android默认的主题使用情况。

android的主题主要有Theme、Theme.light、Theme.Holo、Theme.Holo.Light,  以及由他们派生出来的各项细类,这里的"."就是一种很清晰的继承关系。

比如Theme.Holo.Dialog 就是在继承Theme.Holo的情况下,专门对Dialog的适配做出相关属性的修改。

android主题的声明,一般会放在manifest中,如果不声明,应用将会调用系统默认的主题,本文讨论的即是在各种不同版本的情况下,默认主题是什么。

在frameworks/base/core/java/android/content/res/Resources.java下,有该代码片段,如图

其中两个version分别代表的是API 11  3.0 和API14 4.0。


这段代码告诉我们即manifes未申明任何theme,3.0之前的版本用Theme,4.0之前的版本(3.0之后)用Theme.Holo,4.0之后的通通用Theme.DeviceDefault。

Theme.DeviceDefault是个什么东东?

在frameworks/base/core/res/res/values/themes_device_defaults.xml的开头,有这么一段注释,如图



简言之,在4.0之后,android开放了Theme.DeviceDefault接口,它完全继承了theme.holo,又留出了很多接口供开发者个性化修改自己的主题,如图,


你可以修改相关的字体颜色、风格、按钮、选择开关等样式,在ROM级上做出全局的主题适配。任何一个未做应用主题声明的应用,包括第三方的,安装在该ROM中,都可以被完全的主题化,而又完全不会干扰到android原生的Theme.Holo等标准主题。给丰富多彩、个性定制的ROM开发留下了方便现成的接口空间。(尽管miui的主题并未用此,但并不能否定android这么做确实体现了一个开放的系统博大胸怀)


关于theme中常用的属性、style标签等,请参考这篇关于主题的好文http://www.cnblogs.com/qianxudetianxia/p/3725466.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值