Android样式和主题(二):系统有哪些主题

本文回顾了Android系统主题的发展历程,从最初的Theme到Holo再到Material,详细解析了不同版本的主题特点及兼容方案。介绍了如何通过AppCompat及Design Support Library在低版本Android上实现Material设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android系统自带Theme

简介
  • Android系统在4.0之前没有设计可言,打开APP就是黑乎乎一片,这是最原始的Theme主题
  • 在Android4.0有了Holo主题,Holo本身继承于Theme主题,而Holo.NoActionBar ,Holo.Dialog,Holo.Light这些都是衍生自Holo主题
  • 在Android5.0有了Material主题,俗称材料主题,也是继承于Theme主题
Theme源码简析

以Android6.0为例,查看系统源码这个位置  :frameworks/base/core/res/res/value/,发现有如下几个Theme文件。

截取部分theme.xml:

<style name="Theme">
        <item name="isLightTheme">false</item>
        <item name="colorForeground">@color/bright_foreground_dark</item>
        <item name="colorForegroundInverse">@color/bright_foreground_dark_inverse</item>
        <item name="colorBackground">@color/background_dark</item>
        <item name="colorBackgroundFloating">?attr/colorBackground</item>
        <item name="colorBackgroundCacheHint">?attr/colorBackground</item>
复制代码

截取部分theme_metarial.xml

<style name="Theme.Material">
        <item name="colorForeground">@color/foreground_material_dark</item>
        <item name="colorForegroundInverse">@color/foreground_material_light</item>
        <item name="colorBackground">@color/background_material_dark</item>
        <item name="colorBackgroundFloating">@color/background_floating_material_dark</item>
        <item name="colorBackgroundCacheHint">@color/background_cache_hint_selector_material_dark</item>
        <item name="disabledAlpha">@dimen/disabled_alpha_material_dark</item>
        <item name="backgroundDimAmount">0.6</item>
复制代码
  • themes.xml:低版本的主题,目标API level一般为10或以下
  • themes_holo.xml:从API level 11添加的主题
  • themes_device_defaults.xml:从API level 14添加的主题
  • themes_material.xml:从API level 21添加的主题
  • themes_micro.xml:用于Android Wear的主题
  • themes_leanback.xml:用于Android TV的主题

常见Theme效果比较

下面直观感受下各种Theme的区别

  • 测试设备:一加3T  系统版本:7.0

  • 测试APP:一个Activity放一个Button,点击出现AlertDialog

  • android:Theme

- android:Theme.Holo.Light

- android:Theme.DeviceDefault.Light

- android:Theme.Material.Light

如果把主题设为Theme.Material,然后minsdkVersion改为19,安装到Android4.4的设备会是什么效果

  • 测试设备:Htc one  系统版本:android 4.4

可以看出Material在Android4.4系统上无法使用,而是自动替换成为Holo主题,那么怎么在Android5.0之前的设备使用Material主题呢?

兼容包AppCompat

appcompat-v7是v7-support库下面一个子库,此库主要是对ActiinBar支持,还包含对 Material Design 用户界面实现的支持。

  • 在build.gradle添加compile 'com.android.support:appcompat-v7:23.2.1'
  • 修改主题为Theme.AppCompat.Light
  • 修改Activity为AppCompatActivty
  • 测试设备: htc one 系统版本:4.4

  • 可以看出在4.4的设备使用appcompat-v7这个兼容包,也实现了类似Material的主题风格,但是仔细对比下这个Dialog明显还是Holo风格的。就是说appcompat-v7只是在对Activity主界面风格进行了Material化,而一些控件并没有变化。
  • 要想使我们的app(不管运行在5.0之前还是5.0以后)拥有Material的精髓,包括所有Material控件,动画,还得使用另一个兼容包Android Design Support Library 使用方法:在build.gradle配置 compile 'com.android.support:design:23.2.0' ,这个库依赖于Support v4 和AppCompat Support,添加了这个库就默认实现了这两个库。

下一篇:介绍Material中控件,动画的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值