【首發】根據桌布修改App主題,它真的來了

語言: CN / TW / HK

1、前言

曾經產品經理的奇思妙想,現在終於可以實現了...

2、效果

在這裡插入圖片描述

效果中,原本是紅色桌布對應的紅色App主題,在改成綠色桌布之後,App主題也相應的變成綠色了。

模擬器演示略微小卡...

3、介紹

這個效果主要是使用了Material You中的動態顏色功能。

3.1、什麼是Material You

Material You也稱Material3或M3,是第三代Material Design設計語言。

Material You將顏色重新定義為更加個性化的體驗,助力於構建出色且富有表現力的應用。

3.2、什麼是動態顏色

動態顏色(Dynamic Color)是Material You的關鍵部分,通過動態配色提取演算法從使用者的桌布中派生出顏色方案,且符合無障礙使用的標準,亦或是自定義的個性化顏色方案,然後應用於系統UI和應用程式,從而讓裝置變得更加個性化。

3.3、動態顏色的原理是什麼

  • 首先,從使用者的桌布上提取一種源顏色,並推算出5中關鍵顏色,比如primary、Secondary、Tertiary等。
  • 然後,將每個關鍵顏色轉化為由13種色調組成的調色盤,且每種色調會生成對應的淺、深色方案。
  • 最後,通過系統Token將從桌布提取的顏色方案和App Theme關聯起來,在DynamicColorsActivityLifecycleCallbacks中判斷是否需要覆蓋。

4、實現

4.1、遷移到M3

4.1.1、更新Gradle依賴

升級material庫版本到1.5.0及以上

kotlin implementation 'com.google.android.material:material:1.5.0'

4.1.2、修改版本

修改compileSdkVersiontargetSdkVersion31及以上

kotlin android { compileSdkVersion 31 defaultConfig { applicationId "com.yechaoa.materialdesign" minSdkVersion 23 targetSdkVersion 31 ... } ... }

備註:在Android12上,為增強安全性,需要對所有的四大元件(帶有intent-filter)新增android:exported屬性。

4.1.3、修改App主題

Theme.AppCompat.*Theme.MaterialComponents.* 改為 Theme.Material3.*

```kotlin