11-2.Android 项目结构 - themes.xml 文件基础解读

themes.xml 文件基础解读

  • themes.xml 用于定义一个 Android 应用程序的主题
xml 复制代码
<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.MyTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>
1、主题继承
xml 复制代码
<!-- Base application theme. -->
<style name="Theme.MyTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
	...
</style>
  1. 定义了一个名为 Theme.MyTheme 的自定义主题,它继承自 Theme.MaterialComponents.DayNight.DarkActionBar

  2. parent="Theme.MaterialComponents.DayNight.DarkActionBar" 表示 Theme.MyTheme 是基于 Theme.MaterialComponents.DayNight.DarkActionBar 构建的

  3. Theme.MaterialComponents.DayNight.DarkActionBar 是一个预定义的主题,提供了 Material Design 的样式,同时支持日间和夜间模式,并具有一个深色的 ActionBar

  • Material Design 可以理解为一种设计风格,ActionBar 是 应用中的顶部导航栏
2、主要品牌颜色
xml 复制代码
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
  1. colorPrimary 是主要品牌颜色,这个颜色通常用于工具栏、应用栏、按钮等元素的背景

  2. colorPrimaryVariant 是主要品牌颜色的变体,这个颜色通常用于需要稍微深一点或不同色调的主要颜色场景,例如,状态栏、某些按钮的按下状态等

  3. colorOnPrimary 是在主要颜色背景下的文本或图标颜色,它需要确保在深色背景上有足够的对比度

3、次要品牌颜色
xml 复制代码
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
  1. colorSecondary 是次要品牌颜色,这个颜色通常用于工具栏、应用栏、按钮等元素的背景

  2. colorSecondaryVariant 是次要品牌颜色的变体,这个颜色通常用于需要稍微深一点或不同色调的主要颜色场景,例如,状态栏、某些按钮的按下状态等

  3. colorOnSecondary 是在次要颜色背景下的文本或图标颜色,它需要确保在深色背景上有足够的对比度

4、状态栏颜色
xml 复制代码
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
  • android:statusBarColor 是状态栏的颜色,这里使用了 ?attr/colorPrimaryVariant,即主要品牌颜色的变体
5、自定义
复制代码
<!-- Customize your theme here. -->
  • 开发者可以进一步自定义主题
相关推荐
7177772 小时前
支持混合云的 DevOps 平台有哪些:Gitee、Azure DevOps、GitLab、Jenkins、JFrog 横向对比
gitee·azure·devops
文丑颜不良啊2 小时前
LeetCode2821~2840题目解析
java·leetcode
apcipot_rain3 小时前
C++转Java日记(10)
java·开发语言
简 洁 冬冬4 小时前
泛型方法写法全面辨析:从「能编译」到「能跑」到「能用」
java·泛型
LGL6030A4 小时前
Java学习历程31——初识Spring Boot
java·spring boot·学习
疯华整猫5 小时前
否决 Flutter 提案那天,我发现自己也说不清 Framework 管什么
android
Lansonli6 小时前
大数据Spark(八十八):Spark任务资源之Standalone集群测试
java·服务器·spark
budingxiaomoli6 小时前
Spring AOP
java·spring·java-ee
特立独行的猫A6 小时前
Ionic + 仓颉语言的 cj-tauri 开发框架实战:开发精美移动端 APP
java·后端·python
nice_lcj5206 小时前
LRU 缓存入门:它是什么、怎么用、面试怎么手写
java·数据结构·缓存·面试·lru