<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Material Design on zed的博客</title><link>https://www.dust-zed.site/tags/material-design/</link><description>Recent content in Material Design on zed的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 17 Oct 2025 11:24:19 +0800</lastBuildDate><atom:link href="https://www.dust-zed.site/tags/material-design/index.xml" rel="self" type="application/rss+xml"/><item><title>Android 主题系统：Material 3、Dynamic Color 与深色模式</title><link>https://www.dust-zed.site/android/android-theming/</link><pubDate>Fri, 17 Oct 2025 11:24:19 +0800</pubDate><guid>https://www.dust-zed.site/android/android-theming/</guid><description>&lt;p>主题系统的价值是把颜色、字体、形状和组件默认样式集中管理。Material 3 之后，颜色不再只是主色和强调色，而是一组有语义的 Color Scheme。&lt;/p>
&lt;h2 id="核心结论">核心结论
&lt;/h2>&lt;ol>
&lt;li>主题系统解决的是全局视觉一致性，不是单个控件样式。&lt;/li>
&lt;li>Material 3 用语义化色彩角色描述 UI，而不是直接到处写颜色值。&lt;/li>
&lt;li>Dynamic Color 基于系统壁纸生成色板，适合 Android 12+。&lt;/li>
&lt;li>Compose 使用 &lt;code>MaterialTheme&lt;/code>，传统 View 使用 XML theme，两者可以共存但要统一设计令牌。&lt;/li>
&lt;li>深色模式要关注对比度、语义色和图片资源，不只是反转颜色。&lt;/li>
&lt;/ol>
&lt;h2 id="material-design3material-you">Material Design3(Material You)
&lt;/h2>&lt;h3 id="核心概念">核心概念
&lt;/h3>&lt;p>Material Design3 (MD3)是Google在Android 12+引入的设计系统，核心特性：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Dynamic Color&lt;/strong>：根据壁纸自动生成主题色&lt;/li>
&lt;li>更圆润的组件： 更大的圆角半径&lt;/li>
&lt;li>色彩角色系统：40+个语义化颜色槽位&lt;/li>
&lt;li>个性化：让每个用户的应用看起来独一无二&lt;/li>
&lt;/ul>
&lt;h3 id="版本要求">版本要求
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Material 3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">implementation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;com.google.android.material:material:1.12.0&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Compose Material 3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">implementation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;androidx.compose.material3:material3:1.3.1&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h2 id="主题系统架构">主题系统架构
&lt;/h2>&lt;h3 id="三层结构">三层结构
&lt;/h3>&lt;pre tabindex="0">&lt;code>Material Theme (Material 3)
↓
Application Theme (你的应用主题)
↓
Component Styles (组件样式)
&lt;/code>&lt;/pre>&lt;h3 id="色彩角色系统">色彩角色系统
&lt;/h3>&lt;p>Material 3 定义了5大色彩组：&lt;/p>
&lt;h4 id="1-primary主色">1. Primary（主色）
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- 最重要的品牌色，用于主要操作 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorPrimary&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 主色 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnPrimary&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 主色上的文字/图标 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorPrimaryContainer&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 主色容器 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnPrimaryContainer&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 容器上的内容 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="2-secondary次要色">2. Secondary(次要色)
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- 次要操作，辅助主色 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorSecondary&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnSecondary&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorSecondaryContainer&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnSecondaryContainer&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="3-tertiary第三色">3. Tertiary(第三色)
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- 用于强调或对比 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorTertiary&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnTertiary&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorTertiaryContainer&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnTertiaryContainer&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="4-error错误色">4. Error（错误色）
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- 错误状态 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorError&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnError&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorErrorContainer&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnErrorContainer&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="5-surface--background表面和背景">5. Surface &amp;amp; Background(表面和背景)
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- 背景和表面 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorSurface&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 卡片、对话框背景 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnSurface&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 表面上的文字 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorSurfaceVariant&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 表面变体 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnSurfaceVariant&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 次要文字 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorBackground&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 应用背景 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnBackground&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 背景上的内容 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="6-outline--other">6. Outline &amp;amp; Other
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- 边框和其他 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOutline&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 分割线、边框 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOutlineVariant&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 更弱的边框 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;attr&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorSurfaceTint&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 表面着色（高度感） --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h2 id="dynamic-color-动态配色">Dynamic Color (动态配色)
&lt;/h2>&lt;p>所谓&lt;strong>Dynamic Color&lt;/strong>：Android 12+系统会从用户壁纸提取颜色，生成整套主题色，实现”千人千面“。&lt;/p>
&lt;h3 id="实现方式">实现方式
&lt;/h3>&lt;h4 id="方式一使用系统提供的主题">方式一：使用系统提供的主题
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- res/values/themes.xml --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- Android 12+ 会自动应用 Dynamic Color --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;style&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;Theme.MyApp&amp;#34;&lt;/span> &lt;span class="na">parent=&lt;/span>&lt;span class="s">&amp;#34;Theme.Material3.DayNight&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 可选：覆盖特定颜色 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorPrimary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/custom_primary&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/style&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- res/values-v31/themes.xml (Android 12+ 专用) --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 使用 DynamicColors 主题 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;style&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;Theme.MyApp&amp;#34;&lt;/span> &lt;span class="na">parent=&lt;/span>&lt;span class="s">&amp;#34;Theme.Material3.DayNight.NoActionBar&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 系统自动应用壁纸颜色，无需定义 colorPrimary 等 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/style&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="方式二代码启用更灵活">方式二：代码启用（更灵活）
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Application 或 Activity
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">MyApplication&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">Application&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">override&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">onCreate&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">super&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">onCreate&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 全局启用 Dynamic Color
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nc">DynamicColors&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">applyToActivitiesIfAvailable&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// 单个 Activity 启用
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">MainActivity&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">AppCompatActivity&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">override&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">onCreate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">savedInstanceState&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Bundle&lt;/span>&lt;span class="p">?)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">super&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">onCreate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">savedInstanceState&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 只在此 Activity 启用
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nc">DynamicColors&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">applyIfAvailable&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="方式三提供回退方案">方式三：提供回退方案
&lt;/h4>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// 支持用户选择是否启用
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">MyApplication&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">Application&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">override&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">onCreate&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">super&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">onCreate&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">supportsDynamicColor&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="n">userPrefersDynamicColor&lt;/span>&lt;span class="p">())&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nc">DynamicColors&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">applyToActivitiesIfAvailable&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">private&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">supportsDynamicColor&lt;/span>&lt;span class="p">():&lt;/span> &lt;span class="n">Boolean&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nc">Build&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nc">VERSION&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SDK_INT&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="nc">Build&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nc">VERSION_CODES&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">S&lt;/span> &lt;span class="c1">// Android 12+
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="自定义dynamic-color">自定义Dynamic Color
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- 即使启用 Dynamic Color，也可覆盖特定颜色 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;style&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;Theme.MyApp&amp;#34;&lt;/span> &lt;span class="na">parent=&lt;/span>&lt;span class="s">&amp;#34;Theme.Material3.DayNight&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 强制使用品牌色作为 Primary --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorPrimary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/brand_color&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 其他颜色让系统自动生成 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/style&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h2 id="传统view主题">传统View主题
&lt;/h2>&lt;h3 id="完整主题配置">完整主题配置
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- res/values/colors.xml --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- Light Mode Colors --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_primary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#6750A4&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_onPrimary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#FFFFFF&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_primaryContainer&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#EADDFF&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_onPrimaryContainer&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#21005D&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_secondary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#625B71&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_onSecondary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#FFFFFF&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_secondaryContainer&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#E8DEF8&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_onSecondaryContainer&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#1D192B&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_surface&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#FFFBFE&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_onSurface&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#1C1B1F&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_background&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#FFFBFE&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- Dark Mode Colors --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_dark_primary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#D0BCFF&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_dark_onPrimary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#381E72&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- ... 其他深色模式颜色 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- res/values/themes.xml --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;style&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;Theme.MyApp&amp;#34;&lt;/span> &lt;span class="na">parent=&lt;/span>&lt;span class="s">&amp;#34;Theme.Material3.DayNight.NoActionBar&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- Primary --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorPrimary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_primary&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnPrimary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_onPrimary&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorPrimaryContainer&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_primaryContainer&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnPrimaryContainer&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_onPrimaryContainer&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- Secondary --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorSecondary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_secondary&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnSecondary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_onSecondary&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorSecondaryContainer&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_secondaryContainer&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnSecondaryContainer&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_onSecondaryContainer&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- Surface &amp;amp; Background --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorSurface&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_surface&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;colorOnSurface&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_onSurface&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;android:colorBackground&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_background&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 状态栏和导航栏 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;android:statusBarColor&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@android:color/transparent&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;android:navigationBarColor&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_light_surface&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;android:windowLightStatusBar&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>true&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;android:windowLightNavigationBar&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>true&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 形状（圆角） --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;shapeAppearanceSmallComponent&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@style/ShapeAppearance.MyApp.SmallComponent&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;shapeAppearanceMediumComponent&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@style/ShapeAppearance.MyApp.MediumComponent&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;shapeAppearanceLargeComponent&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@style/ShapeAppearance.MyApp.LargeComponent&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/style&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 自定义形状 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;style&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;ShapeAppearance.MyApp.SmallComponent&amp;#34;&lt;/span> &lt;span class="na">parent=&lt;/span>&lt;span class="s">&amp;#34;ShapeAppearance.Material3.SmallComponent&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;cornerFamily&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>rounded&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;cornerSize&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>8dp&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/style&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;style&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;ShapeAppearance.MyApp.MediumComponent&amp;#34;&lt;/span> &lt;span class="na">parent=&lt;/span>&lt;span class="s">&amp;#34;ShapeAppearance.Material3.MediumComponent&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;cornerSize&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>12dp&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/style&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;style&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;ShapeAppearance.MyApp.LargeComponent&amp;#34;&lt;/span> &lt;span class="na">parent=&lt;/span>&lt;span class="s">&amp;#34;ShapeAppearance.Material3.LargeComponent&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;cornerSize&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>16dp&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/style&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- res/values-night/colors.xml --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 深色模式的颜色会自动被使用 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_primary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_dark_primary&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;md_theme_light_onPrimary&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>@color/md_theme_dark_onPrimary&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- ... --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="在布局中使用">在布局中使用
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- res/layout/activity_main.xml --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;LinearLayout&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:layout_width=&lt;/span>&lt;span class="s">&amp;#34;match_parent&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:layout_height=&lt;/span>&lt;span class="s">&amp;#34;match_parent&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:background=&lt;/span>&lt;span class="s">&amp;#34;?attr/colorBackground&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 使用主题颜色 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;com.google.android.material.button.MaterialButton&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:layout_width=&lt;/span>&lt;span class="s">&amp;#34;wrap_content&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:layout_height=&lt;/span>&lt;span class="s">&amp;#34;wrap_content&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:text=&lt;/span>&lt;span class="s">&amp;#34;Primary Button&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:backgroundTint=&lt;/span>&lt;span class="s">&amp;#34;?attr/colorPrimary&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:textColor=&lt;/span>&lt;span class="s">&amp;#34;?attr/colorOnPrimary&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 次要按钮 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;com.google.android.material.button.MaterialButton&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">style=&lt;/span>&lt;span class="s">&amp;#34;@style/Widget.Material3.Button.TonalButton&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:layout_width=&lt;/span>&lt;span class="s">&amp;#34;wrap_content&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:layout_height=&lt;/span>&lt;span class="s">&amp;#34;wrap_content&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:text=&lt;/span>&lt;span class="s">&amp;#34;Secondary Button&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- 卡片使用 Surface 色 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;com.google.android.material.card.MaterialCardView&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:layout_width=&lt;/span>&lt;span class="s">&amp;#34;match_parent&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:layout_height=&lt;/span>&lt;span class="s">&amp;#34;wrap_content&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">app:cardBackgroundColor=&lt;/span>&lt;span class="s">&amp;#34;?attr/colorSurface&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">app:cardElevation=&lt;/span>&lt;span class="s">&amp;#34;2dp&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;TextView&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:layout_width=&lt;/span>&lt;span class="s">&amp;#34;wrap_content&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:layout_height=&lt;/span>&lt;span class="s">&amp;#34;wrap_content&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:text=&lt;/span>&lt;span class="s">&amp;#34;Card Content&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">android:textColor=&lt;/span>&lt;span class="s">&amp;#34;?attr/colorOnSurface&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/com.google.android.material.card.MaterialCardView&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/LinearLayout&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h2 id="compose主题">Compose主题
&lt;/h2>&lt;h3 id="完整compose主题实现">完整Compose主题实现
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ui/theme/Color.kt
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">package&lt;/span> &lt;span class="nn">com.example.myapp.ui.theme&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.ui.graphics.Color&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Light Theme Colors
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_primary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFF6750A4&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_onPrimary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFFFFFFFF&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_primaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFFEADDFF&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_onPrimaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFF21005D&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_secondary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFF625B71&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_onSecondary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFFFFFFFF&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_secondaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFFE8DEF8&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_onSecondaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFF1D192B&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_surface&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFFFFFBFE&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_onSurface&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFF1C1B1F&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_light_background&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFFFFFBFE&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Dark Theme Colors
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_dark_primary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFFD0BCFF&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_dark_onPrimary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFF381E72&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_dark_primaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFF4F378B&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_dark_onPrimaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFFEADDFF&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_dark_secondary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFFCCC2DC&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_dark_onSecondary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFF332D41&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_dark_surface&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFF1C1B1F&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_dark_onSurface&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFFE6E1E5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">md&lt;/span>&lt;span class="n">_theme_dark_background&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Color&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0xFF1C1B1F&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ui/theme/Theme.kt
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">package&lt;/span> &lt;span class="nn">com.example.myapp.ui.theme&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">android.app.Activity&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">android.os.Build&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.foundation.isSystemInDarkTheme&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.material3.*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.runtime.Composable&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.runtime.SideEffect&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.ui.graphics.toArgb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.ui.platform.LocalContext&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.ui.platform.LocalView&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.core.view.WindowCompat&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">private&lt;/span> &lt;span class="k">val&lt;/span> &lt;span class="py">LightColorScheme&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">lightColorScheme&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">primary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_primary&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onPrimary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_onPrimary&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">primaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_primaryContainer&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onPrimaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_onPrimaryContainer&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">secondary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_secondary&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onSecondary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_onSecondary&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">secondaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_secondaryContainer&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onSecondaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_onSecondaryContainer&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">surface&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_surface&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onSurface&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_onSurface&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">background&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_light_background&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">private&lt;/span> &lt;span class="k">val&lt;/span> &lt;span class="py">DarkColorScheme&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">darkColorScheme&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">primary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_dark_primary&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onPrimary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_dark_onPrimary&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">primaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_dark_primaryContainer&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onPrimaryContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_dark_onPrimaryContainer&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">secondary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_dark_secondary&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onSecondary&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_dark_onSecondary&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">surface&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_dark_surface&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onSurface&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_dark_onSurface&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">background&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">md_theme_dark_background&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@Composable&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">fun&lt;/span> &lt;span class="nf">MyAppTheme&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">darkTheme&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Boolean&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">isSystemInDarkTheme&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 启用 Dynamic Color（Android 12+）
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">dynamicColor&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Boolean&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">content&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nd">@Composable&lt;/span> &lt;span class="p">()&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="n">Unit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">colorScheme&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">when&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Android 12+ 支持 Dynamic Color
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">dynamicColor&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nc">Build&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nc">VERSION&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SDK_INT&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="nc">Build&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nc">VERSION_CODES&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">S&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">context&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">LocalContext&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">current&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">darkTheme&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">dynamicDarkColorScheme&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">context&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span> &lt;span class="n">dynamicLightColorScheme&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">context&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 回退到静态主题
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">darkTheme&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="n">DarkColorScheme&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="n">LightColorScheme&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 设置状态栏颜色
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">val&lt;/span> &lt;span class="py">view&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">LocalView&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">current&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(!&lt;/span>&lt;span class="n">view&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">isInEditMode&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">SideEffect&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">window&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">view&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">context&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">Activity&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">window&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">statusBarColor&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">colorScheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">primary&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">toArgb&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nc">WindowCompat&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">getInsetsController&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">window&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">view&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">isAppearanceLightStatusBars&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">!&lt;/span>&lt;span class="n">darkTheme&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MaterialTheme&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">colorScheme&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">colorScheme&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">typography&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Typography&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">content&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">content&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ui/theme/Type.kt
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">package&lt;/span> &lt;span class="nn">com.example.myapp.ui.theme&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.material3.Typography&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.ui.text.TextStyle&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.ui.text.font.FontFamily&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.ui.text.font.FontWeight&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">import&lt;/span> &lt;span class="nn">androidx.compose.ui.unit.sp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">val&lt;/span> &lt;span class="py">Typography&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Typography&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">bodyLarge&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">TextStyle&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fontFamily&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">FontFamily&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Default&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fontWeight&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">FontWeight&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Normal&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fontSize&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">16.&lt;/span>&lt;span class="n">sp&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lineHeight&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">24.&lt;/span>&lt;span class="n">sp&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">letterSpacing&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">0.5&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">titleLarge&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">TextStyle&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fontFamily&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">FontFamily&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Default&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fontWeight&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">FontWeight&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Normal&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fontSize&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">22.&lt;/span>&lt;span class="n">sp&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lineHeight&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">28.&lt;/span>&lt;span class="n">sp&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">letterSpacing&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">0.&lt;/span>&lt;span class="n">sp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">labelSmall&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">TextStyle&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fontFamily&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">FontFamily&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Default&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fontWeight&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">FontWeight&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Medium&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fontSize&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">11.&lt;/span>&lt;span class="n">sp&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lineHeight&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">16.&lt;/span>&lt;span class="n">sp&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">letterSpacing&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">0.5&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// MainActivity.kt
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">MainActivity&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">ComponentActivity&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">override&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">onCreate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">savedInstanceState&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Bundle&lt;/span>&lt;span class="p">?)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">super&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">onCreate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">savedInstanceState&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">setContent&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MyAppTheme&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Surface&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">modifier&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">Modifier&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">fillMaxSize&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">color&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">MaterialTheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">colorScheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">background&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">AppContent&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@Composable&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">fun&lt;/span> &lt;span class="nf">AppContent&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Column&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">modifier&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Modifier&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">fillMaxSize&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">padding&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">16.&lt;/span>&lt;span class="n">dp&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 使用主题颜色
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Button&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onClick&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">colors&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">ButtonDefaults&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">buttonColors&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">containerColor&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">MaterialTheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">colorScheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">primary&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">contentColor&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">MaterialTheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">colorScheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">onPrimary&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Text&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Primary Button&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 使用 Surface 卡片
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Card&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">modifier&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Modifier&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">fillMaxWidth&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">padding&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">top&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">16.&lt;/span>&lt;span class="n">dp&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">colors&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">CardDefaults&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">cardColors&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">containerColor&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">MaterialTheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">colorScheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">surfaceVariant&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Text&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">text&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;Card Content&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">MaterialTheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">typography&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">bodyLarge&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">color&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">MaterialTheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">colorScheme&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">onSurfaceVariant&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">modifier&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">Modifier&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">padding&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">16.&lt;/span>&lt;span class="n">dp&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h2 id="深色模式">深色模式
&lt;/h2>&lt;p>完整实现方法&lt;/p>
&lt;h3 id="1系统跟随">1.系统跟随
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// 使用 DayNight 主题
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">style&lt;/span> &lt;span class="n">name&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s2">&amp;#34;Theme.MyApp&amp;#34;&lt;/span> &lt;span class="n">parent&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s2">&amp;#34;Theme.Material3.DayNight&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;!&lt;/span>&lt;span class="o">--&lt;/span> &lt;span class="n">自动根据系统设置切换&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="n">style&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="2-手动切换">2. 手动切换
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// 提供用户选择
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">SettingsActivity&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">AppCompatActivity&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">override&lt;/span> &lt;span class="k">fun&lt;/span> &lt;span class="nf">onCreate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">savedInstanceState&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Bundle&lt;/span>&lt;span class="p">?)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">super&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">onCreate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">savedInstanceState&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 获取当前模式
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">val&lt;/span> &lt;span class="py">currentMode&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">AppCompatDelegate&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">getDefaultNightMode&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 切换模式
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">when&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">userSelection&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;light&amp;#34;&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="nc">AppCompatDelegate&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">setDefaultNightMode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nc">AppCompatDelegate&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">MODE_NIGHT_NO&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;dark&amp;#34;&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="nc">AppCompatDelegate&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">setDefaultNightMode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nc">AppCompatDelegate&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">MODE_NIGHT_YES&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;system&amp;#34;&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="nc">AppCompatDelegate&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">setDefaultNightMode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nc">AppCompatDelegate&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">MODE_NIGHT_FOLLOW_SYSTEM&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Compose 中切换
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nd">@Composable&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">fun&lt;/span> &lt;span class="nf">ThemeSettings&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">var&lt;/span> &lt;span class="py">darkMode&lt;/span> &lt;span class="k">by&lt;/span> &lt;span class="n">remember&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">mutableStateOf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">false&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MyAppTheme&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">darkTheme&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">darkMode&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Switch&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">checked&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">darkMode&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onCheckedChange&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">darkMode&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">it&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="3-深色模式注意事项">3. 深色模式注意事项
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- 为深色模式提供专用资源 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- res/values-night/colors.xml --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;color&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;window_background&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>#121212&lt;span class="nt">&amp;lt;/color&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- res/drawable-night/ic_logo.xml --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- 深色模式下使用不同的图标 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- res/values-night/themes.xml --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;style&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;Theme.MyApp&amp;#34;&lt;/span> &lt;span class="na">parent=&lt;/span>&lt;span class="s">&amp;#34;Theme.Material3.DayNight&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;item&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;android:windowLightStatusBar&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>false&lt;span class="nt">&amp;lt;/item&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/style&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h2 id="最佳实践">最佳实践
&lt;/h2>&lt;h3 id="1-使用material-3">1. 使用Material 3
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ✅ 使用 M3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">implementation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;com.google.android.material:material:1.12.0&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parent&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s2">&amp;#34;Theme.Material3.DayNight&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ❌ 不要用旧版本
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">parent&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s2">&amp;#34;Theme.MaterialComponents.DayNight&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="2-启用dynamic-color">2. 启用Dynamic Color
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ✅ 让应用更个性化
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nc">DynamicColors&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">applyToActivitiesIfAvailable&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="3-使用语义化颜色">3. 使用语义化颜色
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ✅ 使用主题属性
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">android&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">textColor&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s2">&amp;#34;?attr/colorOnSurface&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ❌ 不要硬编码
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">android&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">textColor&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s2">&amp;#34;#000000&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="4-提供深色模式">4. 提供深色模式
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ✅ 支持系统深色模式
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">parent&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s2">&amp;#34;Theme.Material3.DayNight&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ❌ 只支持亮色
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">parent&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s2">&amp;#34;Theme.Material3.Light&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr></description></item></channel></rss>