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
    评论
Android styles 是一种用于定义和应用视图的样式和外观的机制。通过使用 styles,您可以集中管理应用程序中的视图的外观,并在需要时轻松应用它们。 在 Android 中,您可以通过在 res/values/styles.xml 文件中定义样式,然后在布局文件或代码中应用它们来创建和使用样式。样式可以包含多个属性,例如文本颜色、背景颜色、字体大小等,以及其他外观相关的属性。 以下是一个示例 styles.xml 文件中定义的样式: ```xml <resources> <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- 定义应用主题 --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="TextViewStyle"> <!-- 定义 TextView 的样式 --> <item name="android:textColor">@color/textColor</item> <item name="android:textSize">16sp</item> </style> </resources> ``` 要在布局文件或代码中应用样式,您可以使用 `style` 属性。例如,在布局文件中应用 TextView 样式: ```xml <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" style="@style/TextViewStyle" /> ``` 这将使 TextView 使用 TextViewStyle 样式中定义的外观。 通过使用样式,您可以轻松地在整个应用程序中保持一致的外观和样式,并提高代码的可读性和维护性。您还可以使用继承来扩展现有样式或为不同的视图类型创建不同的样式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值