美文网首页
《Android编程权威指南》之样式与主题篇(一)

《Android编程权威指南》之样式与主题篇(一)

作者: 夜远曦白 | 来源:发表于2021-11-23 23:31 被阅读0次

    《Android编程权威指南》第 21 章第一篇,主要就是给 BeatBox 界面重定制,内容不多,将学习到 Android 主题和样式相关的知识。

    一、颜色资源

    颜色资源通常统一放在 res/values/colors.xml 文件中进行管理,整个应用对它进行引用。

    定义几种颜色

    颜色可以从左边的小正方形实时看到,还挺方便。通常项目中会定义各种色值,还有黑夜模式的色值,会放另外一个 -night 的文件夹中的 color.xml,用同一个名字,这样主题切换到暗黑模式就自动变化引用的色值了。跟前面做国际化方式类似做此功能。

    二、样式

    样式是能够应用于视图部件的一套属性。存放在 res/values/styles.xml 中。先添加个新样式 BeatBoxButton。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="BeatBoxButton">
            <item name="android:background">@color/dark_blue</item>
        </style>
    </resources>
    

    样式可以为很多控件共用,更改属性时,只修改公共样式定义即可。

    然后去给 Button 添加样式。

    style="@style/BeatBoxButton"
    

    跑起来实际上依然是丑丑的,问题不大,就是为了学习嘛。

    样式继承

    样式也支持继承。一个样式能继承并覆盖其他样式的属性。

    比如用命名的方式继承:

        <style name="BeatBoxButton.Strong">
            <item name="android:textStyle">bold</item>
        </style>
    

    或者是指定父样式的方式继承:

        <style name="StrongBeatBoxButton" parent="@style/BeatBoxButton">
            <item name="android:textStyle">bold</item>
        </style>
    

    然后继续给 Button 设置一下体验一下。

    三、主题

    主题可看作样式的进化加强版,主题属性会应用于整个应用。

    打开 manifest 文件可以看到应用默认设置的主题:

    manifest

    theme 指向地方:

    theme

    主题实际也是一种样式,可见此处我的默认的主题继承了 Theme.MaterialComponents.DayNight.DarkActionBar,想要深入了解属性就继续按住 Command(Ctrl)跳转进入即可。

    AppCompat 库自带三大主题:

    • Theme.AppCompat——深色主题。
    • Theme.AppCompat.Light——浅色主题。
    • Theme.AppCompat.Light.DarkActionBar——带深色工具栏的浅色主题。

    大概目前我的项目比书中要新一点,所以默认是 MaterialComponents 库主题,深色模式或者是亮色模式命名规则基本一致。

    有关 MaterialComponent 的深色主题背景 详情请参考:

    https://material.io/develop/android/theming/dark

    四、添加主题颜色

    可自行改成自己想要的颜色啦。

    colorPrimary 属性主要用于应用栏。
    colorPrimaryDark 用于屏幕顶部的状态栏。

    注意,只有 Lollipop 以后的系统支持状态栏主题色。对于之前的系统,无论指定什么主题色,状态栏都是不变的黑底色。

    项目中常常有需求需要沉浸式的状态栏,有个沉浸式状态栏实现开源项目推荐:

    https://github.com/gyf-dev/ImmersionBar

    貌似挺不错的。目前我在项目中也是用此方案来解决沉浸式状态栏问题。

    其他

    BeatBox 项目 Demo 地址:

    https://github.com/visiongem/AndroidGuideApp/tree/master/BeatBox

    相关文章

      网友评论

          本文标题:《Android编程权威指南》之样式与主题篇(一)

          本文链接:https://www.haomeiwen.com/subject/pfgbtrtx.html