在 2021 年的 I/O 大會(huì)上,我們展示了 Material Design 大膽而富有表現(xiàn)力的演變。Material Design 3 在 Material Design Primary 顏色和 Secondary 顏色的基礎(chǔ)上,引入了 Tertiary 顏色和附加色槽,用于驗(yàn)證無(wú)障礙訪問(wèn)功能并保障顯示的和諧性。在本篇文章中,我們將為您展示更多有關(guān) Material You 動(dòng)態(tài)配色的內(nèi)容,包括動(dòng)態(tài)配色是什么,以及如何在您的應(yīng)用中實(shí)現(xiàn)它。
動(dòng)態(tài)配色Material You 通過(guò)動(dòng)態(tài)配色,將顏色重新定義為更加個(gè)性化的體驗(yàn)。那么,什么是動(dòng)態(tài)配色?Android 12 可以通過(guò)動(dòng)態(tài)配色提取算法來(lái)選擇顏色值,基于動(dòng)態(tài)配色,您可根據(jù)用戶的桌面壁紙顏色生成自定義調(diào)色板。動(dòng)態(tài)的淺、深色方案可體現(xiàn)在整個(gè)用戶系統(tǒng)界面,以及某些應(yīng)用中。這些方案將根據(jù)用戶偏好和視覺(jué)需求進(jìn)行更改或調(diào)整。動(dòng)態(tài)配色是一種算法系統(tǒng),支持個(gè)性化顏色體驗(yàn)的同時(shí)還尊重蘊(yùn)含品牌標(biāo)識(shí)或具有傳統(tǒng)意義的顏色,如綠色代表 "Go",紅色代表 "Stop"。
動(dòng)態(tài)配色的原理首先,它從用戶的壁紙上提取一種源顏色,并推算出五種關(guān)鍵顏色,然后將每個(gè)關(guān)鍵顏色轉(zhuǎn)化為由 13 種色調(diào)組成的調(diào)色板。接下來(lái),它會(huì)為從調(diào)色板中選擇的顏色分配一組特定的角色和值,并將這些角色和值映射到我們稱之為 "方案"的組件上。

△從壁紙中提取關(guān)鍵顏色
配色方案
配色方案可視為一組拼合在一起的相關(guān)色調(diào),而非一組固定不變的值。每種色調(diào)都會(huì)生成一組淺、深色方案,這些方案將根據(jù)偏好和視覺(jué)需求進(jìn)行更改或調(diào)整。Error 顏色也會(huì)自動(dòng)分配到相應(yīng)色槽中。界面需要的每個(gè)顏色角色,都會(huì)經(jīng)歷這個(gè)過(guò)程: 通過(guò)元素之間的適當(dāng)對(duì)比,從關(guān)鍵顏色派生出來(lái)。這些顏色角色就是您在設(shè)計(jì)中要映射到的內(nèi)容。

△不同顏色的淺深色方案
您可能已經(jīng)熟悉了目前的 12 個(gè)顏色槽,比如其中的 Primary 色調(diào)和 On Primary 色調(diào)。在 Material Design 3 (或簡(jiǎn)稱為 M3) 中,我們?cè)谠O(shè)計(jì)方案里引入了新調(diào)色板和角色,您可將 Container 顏色及其對(duì)應(yīng)的 On Container 顏色,用于無(wú)需像非容器元素那樣強(qiáng)調(diào)的界面元素。另外,新的 Tertiary 顏色調(diào)色板,則用于為您的產(chǎn)品帶來(lái)更廣泛的色彩表現(xiàn)力。
△新增的 Container 及 Tertiary 顏色色槽
Token
使用動(dòng)態(tài)配色,意味著我們需要使用會(huì)在運(yùn)行時(shí)改變的值構(gòu)建界面,這就需要我們根據(jù)語(yǔ)義,而非硬編碼的值來(lái)引用顏色。那么如何使這一切成為可能呢?方法是使用 Token。Token 在 Material Design 2 顏色角色的基礎(chǔ)上,提供了全局的樣式色槽,它能夠幫您更改與顏色級(jí)聯(lián)一致的角色分配。
△在界面中使用 Token
Token 可以有多種類型,它可以與某個(gè)值配對(duì)或引用另一個(gè) Token。在使用了 M3 后,我們就有了調(diào)色板、色彩引用和系統(tǒng) Token 三個(gè)概念。您創(chuàng)建的顏色角色是系統(tǒng) Token,它們可以繼承我們?cè)谡{(diào)色板中引用的 Token,包括 Primary、Secondary、Tertiary、Neutral、Neutral Variant 以及 Error 顏色。
設(shè)計(jì) Token 使得整個(gè)產(chǎn)品更具靈活性和一致性,它允許設(shè)計(jì)師們?yōu)榻缑嬷性刂付伾巧?,而非設(shè)定一個(gè)用于實(shí)現(xiàn)的值。生成設(shè)計(jì) Token 時(shí)可通過(guò)確定一個(gè)單一事實(shí)來(lái)源,來(lái)節(jié)省開(kāi)發(fā)者和設(shè)計(jì)師的時(shí)間。例如,開(kāi)發(fā)者可以引用設(shè)計(jì) Token 文件以映射到 Compose 中的主題對(duì)象;而如果您在代碼中更改了 Token,則可以與設(shè)計(jì)師共享這些更改,以便設(shè)計(jì)師在其設(shè)計(jì)中更新這些值。

△使用 Token 為界面元素指定顏色角色
通過(guò)使用 Token 替代顏色和排版的硬編碼值,您可以更輕松地對(duì)設(shè)計(jì)進(jìn)行迭代。色調(diào)調(diào)色板中的顏色可通過(guò)設(shè)計(jì) Token 映射到淺、深色彩方案中,同時(shí)顏色方案的值也可以被重寫,以便繼承自定義顏色或其他色彩引用的 Token。
您可以利用這些帶有 Token 的顏色映射,將用戶生成的顏色轉(zhuǎn)變?yōu)閯?dòng)態(tài)且富有表現(xiàn)力的界面。當(dāng)系統(tǒng)顏色在運(yùn)行過(guò)程中發(fā)生變化時(shí)便會(huì)更新調(diào)色板以及配色方案,而后者便是您映射到主題背景和組件的配色方案。在相應(yīng)的組件上使用正確的顏色規(guī)則,以確??梢詿o(wú)障礙訪問(wèn)和風(fēng)格的連續(xù)性,這是至關(guān)重要的一點(diǎn)。

△相同的 Token,不同的色值
無(wú)障礙訪問(wèn)
但是這些 Token 本身如何確保色彩的無(wú)障礙訪問(wèn)?由于配色方案是由調(diào)色定義的,而非色調(diào)或十六進(jìn)制值,所以,為了使任何配色方案在默認(rèn)情況下均可滿足無(wú)障礙訪問(wèn),顏色組合要基于亮度來(lái)滿足無(wú)障礙使用的標(biāo)準(zhǔn)。
如下圖所示,在亮度接近時(shí),盡管兩種顏色的色調(diào)并不相同,但調(diào)色卻非常相似。這樣的色彩組合使得對(duì)比度過(guò)低,而對(duì)于有一定程度色盲的人來(lái)說(shuō)更是如此。如果對(duì)組件應(yīng)用這樣的色彩組合,則會(huì)導(dǎo)致無(wú)法滿足無(wú)障礙訪問(wèn)。因此,為了保證顏色在無(wú)障礙層面的可及性,所有成對(duì)顏色均存在 60 的亮度差。
自定義擴(kuò)展
動(dòng)態(tài)配色讓個(gè)人設(shè)備變得更為個(gè)性化。一旦您在產(chǎn)品界面中加入個(gè)性化設(shè)置,用戶將比以往任何時(shí)候都能更好地控制他們的設(shè)備。通過(guò)使用動(dòng)態(tài)配色和 M3 配色方案,用戶壁紙將能夠影響應(yīng)用的配色方案,您的應(yīng)用顏色會(huì)自動(dòng)適應(yīng)與集成用戶的壁紙顏色。這對(duì)于您應(yīng)用的配色來(lái)講,也許是一種全新思維方式。但我們?nèi)缃袼鶆?chuàng)建的數(shù)字化產(chǎn)品,會(huì)反映出現(xiàn)實(shí)生活中的產(chǎn)品趨勢(shì),這意味著更多個(gè)性化的色彩、圖案和元素。在我們需要一套配色時(shí),如果您覺(jué)得自己的調(diào)色板不合適或缺少可用資源時(shí),動(dòng)態(tài)配色可為您提供用戶喜歡的、現(xiàn)成的、可無(wú)障礙訪問(wèn)的調(diào)色板。
我們充分理解,您可能需要品牌配色方案成為用戶矚目的焦點(diǎn),所以最新的配色系統(tǒng)可以在支持無(wú)障礙訪問(wèn)的同時(shí)融入應(yīng)用的顏色背景。您可以使用自己的品牌和設(shè)計(jì)系統(tǒng)顏色創(chuàng)造出和諧的、可無(wú)障礙訪問(wèn)的調(diào)色板。M3 支持自定義參數(shù)的系統(tǒng)化應(yīng)用,這有助于您定義和維護(hù)品牌。在 Android 應(yīng)用上,自定義配色方案也可以作為禁用動(dòng)態(tài)配色后的備用方案。不過(guò),無(wú)論是使用動(dòng)態(tài)配色,還是自定義配色,要將您的 Android 應(yīng)用遷移并使用 Material 3,您首先需要遷移到基礎(chǔ)顏色或 M3 自定義方案來(lái)訪問(wèn)新的 Token。
△M3 基礎(chǔ)顏色角色
我們始終鼓勵(lì)您利用 Material Design 并根據(jù)需要進(jìn)行擴(kuò)展。M3 的顏色系統(tǒng)可以與自定義組件和品牌風(fēng)格相結(jié)合,通過(guò)自動(dòng)處理關(guān)鍵調(diào)整,滿足無(wú)障礙訪問(wèn)的顏色對(duì)比度,保障易讀性、交互狀態(tài)和組件結(jié)構(gòu)。
遷移至 Material 3接下來(lái)向您介紹如何將應(yīng)用遷移至 Material 3。遷移的第一步是引用新 Token 并將其與應(yīng)用中的組件連接。Material 3 的排版、形狀和顏色文件與 Material 2 十分類似,請(qǐng)您確保獲取到最新基礎(chǔ)顏色或自定義品牌方案并設(shè)置值。
Material Theme BuilderM3 中有一些新的 Token 需要注意,例如 Primary、Secondary、Tertiary Container 以及 On Variants 系列顏色。對(duì)您來(lái)說(shuō),管理這些顏色可能非常費(fèi)力,因此我們創(chuàng)建了一個(gè)名為 Material Theme Builder 的工具來(lái)為您生成這些內(nèi)容。您可在網(wǎng)頁(yè)中打開(kāi)它并點(diǎn)擊 "Custom",然后點(diǎn)擊 "Export for Compose"。
如您有自定義顏色,可將其添加為擴(kuò)展顏色。我們可以打開(kāi)該工具并切換到 "Custom"標(biāo)簽頁(yè),在 Material Theme Builder 中您可以識(shí)別并輸入一種或多種品牌顏色,這些顏色將用于定義調(diào)色板,通過(guò)添加特定顏色可確定每個(gè)調(diào)色板的生成方式。如下圖所示,您可在左側(cè)輸入品牌的關(guān)鍵顏色,每種顏色都會(huì)分配到相應(yīng)的關(guān)鍵顏色角色,具體情況視其在界面中的用途而定。如果您有現(xiàn)成的應(yīng)用,您可以使用 Material 2 中的顏色配置 Primary 和 Secondary 顏色。隨后,您可以點(diǎn)擊右上角的導(dǎo)出代碼菜單,然后在下拉列表中選擇 "Compose"。

△自定義顏色方案
最后,您可將這些文件直接放入 Android Studio,并在必要時(shí)更新軟件包。這一操作將更新顏色、排版和主題背景文件,更新代碼后您即可運(yùn)行應(yīng)用來(lái)查看組件映射的新品牌主題背景。
使用動(dòng)態(tài)配色
您可使用上述的網(wǎng)頁(yè)工具,預(yù)覽基于源顏色或圖像生成的各種方案。接下來(lái),我們將討論如何基于用戶所選圖像所生成的顏色更新應(yīng)用。請(qǐng)您打開(kāi) Kotlin 文件 theme,并添加檢查來(lái)查看您是否有使用動(dòng)態(tài)配色,然后您可以根據(jù)條件返回由系統(tǒng)調(diào)色板創(chuàng)建的深淺方案顏色。
添加上述代碼后,即可在設(shè)備上運(yùn)行應(yīng)用并更改壁紙,此時(shí)將顯示用戶生成的用于主題背景的顏色。您可添加一個(gè)切換開(kāi)關(guān),以便用戶在動(dòng)態(tài)或自定義的主題背景之間進(jìn)行切換,這兩種方案都提供了深色和淺色兩種方案供用戶選擇。val dynamic = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
val colorScheme = if (dynamic) {
val context = LocalContext.current
if (dark) dynamicLightColorScheme (context) else dynamicDarkColorScheme (context)
} else {
// 使用 lightColorScheme、darkColorScheme 等
}
您可以有選擇地應(yīng)用動(dòng)態(tài)配色,并與品牌配色方案同時(shí)生效。例如,個(gè)人資料或帳戶界面可展示個(gè)人的用戶顏色,使重要的時(shí)刻變得個(gè)性化;如果您有語(yǔ)義顏色,則不必將其排除在外,而是可以將其包含在準(zhǔn)備實(shí)現(xiàn)的其他顏色之內(nèi)。這意味著您可為應(yīng)用的主要主題、語(yǔ)義上的擴(kuò)展顏色,甚至品牌顏色使用動(dòng)態(tài)配色;或者您使用自己豐富的顏色庫(kù)。
△配色方案隨用戶設(shè)置的壁紙變化
結(jié)語(yǔ)
憑借動(dòng)態(tài)、品牌化的主題,Material You 能夠體現(xiàn)用戶對(duì)于顏色的選擇,幫助您構(gòu)建出色且富有表現(xiàn)力的應(yīng)用;同時(shí)設(shè)計(jì) Token 也有助于開(kāi)發(fā)者和設(shè)計(jì)師的協(xié)作。我們十分期待看到您構(gòu)建的應(yīng)用!有關(guān)動(dòng)態(tài)配色的更多信息,請(qǐng)使用 Material Theme Builder 或安裝 Figma 插件,該插件可與更新的 M3 設(shè)計(jì)工具包配合使用。您可通過(guò)瀏覽 Figma 社區(qū)獲得該插件,從而實(shí)現(xiàn)動(dòng)態(tài)配色的可視化,并創(chuàng)建自定義配色方案。原文標(biāo)題:借助 Material You 動(dòng)態(tài)配色豐富您的應(yīng)用
文章出處:【微信公眾號(hào):谷歌開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
Google
+關(guān)注
關(guān)注
5文章
1789瀏覽量
59076 -
動(dòng)態(tài)
+關(guān)注
關(guān)注
0文章
72瀏覽量
20952 -
Material
+關(guān)注
關(guān)注
0文章
7瀏覽量
6440
原文標(biāo)題:借助 Material You 動(dòng)態(tài)配色豐富您的應(yīng)用
文章出處:【微信號(hào):Google_Developers,微信公眾號(hào):谷歌開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
量子力學(xué)經(jīng)典相關(guān)內(nèi)容附圖使之更易理解
GPIO中斷相關(guān)內(nèi)容 精選資料分享
小白求助,機(jī)甲大師機(jī)器人軟件單元測(cè)試的相關(guān)內(nèi)容
簡(jiǎn)單描述一下Arduino相關(guān)內(nèi)容
串口硬件和協(xié)議的相關(guān)內(nèi)容
分享一個(gè)RK3288主板適配LVDS分辨率相關(guān)內(nèi)容
高云半導(dǎo)體時(shí)序約束的相關(guān)內(nèi)容
永康泰沖擊波參數(shù)及相關(guān)內(nèi)容
淺析彈簧管壓力儀表的相關(guān)內(nèi)容
CANOpen系列教程01_ 初識(shí)CAN與CANOpen及相關(guān)內(nèi)容
Material Design指南中更新的相關(guān)內(nèi)容
如何應(yīng)用Material Design 3和Material You
AXI_GP接口和AXI_HP接口的相關(guān)內(nèi)容
LDO相關(guān)內(nèi)容介紹

評(píng)論