11-2.Android 项目结构 - themes.xml 文件基础解读
themes.xml 文件基础解读
themes.xml
用于定义一个 Android 应用程序的主题
<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、主题继承
<!-- Base application theme. -->
<style name="Theme.MyTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
...
</style>
-
定义了一个名为
Theme.MyTheme
的自定义主题,它继承自Theme.MaterialComponents.DayNight.DarkActionBar
-
parent="Theme.MaterialComponents.DayNight.DarkActionBar"
表示Theme.MyTheme
是基于Theme.MaterialComponents.DayNight.DarkActionBar
构建的 -
Theme.MaterialComponents.DayNight.DarkActionBar
是一个预定义的主题,提供了 Material Design 的样式,同时支持日间和夜间模式,并具有一个深色的 ActionBar
- Material Design 可以理解为一种设计风格,ActionBar 是 应用中的顶部导航栏
2、主要品牌颜色
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
-
colorPrimary
是主要品牌颜色,这个颜色通常用于工具栏、应用栏、按钮等元素的背景 -
colorPrimaryVariant
是主要品牌颜色的变体,这个颜色通常用于需要稍微深一点或不同色调的主要颜色场景,例如,状态栏、某些按钮的按下状态等 -
colorOnPrimary
是在主要颜色背景下的文本或图标颜色,它需要确保在深色背景上有足够的对比度
3、次要品牌颜色
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
-
colorSecondary
是次要品牌颜色,这个颜色通常用于工具栏、应用栏、按钮等元素的背景 -
colorSecondaryVariant
是次要品牌颜色的变体,这个颜色通常用于需要稍微深一点或不同色调的主要颜色场景,例如,状态栏、某些按钮的按下状态等 -
colorOnSecondary
是在次要颜色背景下的文本或图标颜色,它需要确保在深色背景上有足够的对比度
4、状态栏颜色
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
android:statusBarColor
是状态栏的颜色,这里使用了?attr/colorPrimaryVariant
,即主要品牌颜色的变体
5、自定义
<!-- Customize your theme here. -->
- 开发者可以进一步自定义主题