一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS應(yīng)用深色模式適配方案

HarmonyOS開發(fā)者 ? 來(lái)源:HarmonyOS開發(fā)者 ? 2025-05-14 09:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

深色模式(Dark Mode)又稱為暗色模式,是與日常使用過(guò)程中的淺色模式(Light Mode)相對(duì)應(yīng)的一種UI主題。深色模式最早來(lái)源于人機(jī)交互領(lǐng)域的研究和實(shí)踐,該模式并非簡(jiǎn)單地將頁(yè)面背景變?yōu)楹谏⑽淖謨?nèi)容變?yōu)榘咨?,而是提供一整套適配該模式的應(yīng)用配色主題。相較于淺色模式,深色模式視覺效果更加柔和,能有效降低屏幕亮度對(duì)眼睛造成的刺激和疲勞。此外,深色模式還能通過(guò)降低像素亮度減少設(shè)備能耗,從而提升續(xù)航表現(xiàn)。

在應(yīng)用深色模式適配時(shí),需遵循UX基礎(chǔ)設(shè)計(jì)原則,保障頁(yè)面內(nèi)容的易讀性、舒適性與視覺一致性,具體可參照專業(yè)深色模式設(shè)計(jì)規(guī)范。適配過(guò)程主要涉及三方面:字體顏色、元素背景色等顏色資源調(diào)整;圖片圖標(biāo)等媒體素材的明暗對(duì)比優(yōu)化;系統(tǒng)狀態(tài)欄的適配處理。此外,還需針對(duì)使用Web組件加載的網(wǎng)頁(yè)等特殊場(chǎng)景進(jìn)行專項(xiàng)適配。

本文主要將介紹深色模式的適配過(guò)程,同時(shí)會(huì)列舉出適配過(guò)程中的常見問(wèn)題及解決方案。

實(shí)現(xiàn)原理

當(dāng)系統(tǒng)切換到深色模式后,應(yīng)用內(nèi)可能會(huì)出現(xiàn)部分內(nèi)容切換到深色主題的情況,例如狀態(tài)欄、彈窗背景色、系統(tǒng)控件等,會(huì)導(dǎo)致應(yīng)用內(nèi)頁(yè)面效果錯(cuò)亂。

為應(yīng)對(duì)上述情況,需要對(duì)應(yīng)用進(jìn)行深色模式下的內(nèi)容適配,目前該適配主要依靠資源目錄。當(dāng)系統(tǒng)對(duì)應(yīng)的設(shè)置項(xiàng)發(fā)生變化后(如系統(tǒng)語(yǔ)言、深淺色模式等),應(yīng)用會(huì)自動(dòng)加載對(duì)應(yīng)資源目錄下的資源文件。

系統(tǒng)為深色模式預(yù)留了dark目錄,該目錄在應(yīng)用創(chuàng)建時(shí)默認(rèn)不存在,在進(jìn)行深色模式適配時(shí),需要開發(fā)者在src/main/resources中手動(dòng)地創(chuàng)建出dark目錄,將深色模式所需的資源放置到該目錄下。對(duì)于淺色模式所需的資源,可以放入默認(rèn)存在的src/main/resources/base目錄下。

在進(jìn)行資源定義時(shí),需要在base目錄與dark目錄中定義同名的資源。例如在base/element/color.json文件中定義text_color為黑色,在dark/element/color.json文件中定義text_color為白色,那么當(dāng)深淺色切換時(shí),應(yīng)用內(nèi)使用了$('app.color.text_color ')作為顏色值的元素會(huì)自動(dòng)切換到對(duì)應(yīng)的顏色,而無(wú)需使用其他邏輯判斷進(jìn)行控制。

一般情況下深淺色模式切換不會(huì)導(dǎo)致應(yīng)用界面產(chǎn)生結(jié)構(gòu)上的變化,而是頁(yè)面結(jié)構(gòu)一致但是采用不同的主題配色、配圖等,使得整個(gè)應(yīng)用在切換到深色模式后依然保持自然美觀,以下為深色模式適配的UX示例。

從上圖中可以看到,在應(yīng)用進(jìn)行深色模式適配過(guò)程中主要的適配項(xiàng)有顏色資源適配、媒體資源適配、狀態(tài)欄適配,除此之外若應(yīng)用內(nèi)使用了Web組件加載了Web內(nèi)容,那么還需對(duì)Web頁(yè)面適配深色模式,具體適配方案可點(diǎn)擊對(duì)應(yīng)鏈接跳轉(zhuǎn)到具體章節(jié)查看。

目前業(yè)內(nèi)應(yīng)用向用戶提供的深淺色模式切換有以下兩種常見方式。

應(yīng)用跟隨系統(tǒng)深淺色模式切換

實(shí)現(xiàn)上,需要開發(fā)者使用setColorMode()方法將ColorMode設(shè)置為COLOR_MODE_NOT_SET(未設(shè)置顏色模式),然后應(yīng)用在運(yùn)行過(guò)程中就可以自動(dòng)感知到系統(tǒng)顏色模式切換,若應(yīng)用完成了深淺色模式適配,將自動(dòng)切換到對(duì)應(yīng)的顏色模式。

應(yīng)用內(nèi)提供手動(dòng)控制深淺色的開關(guān)供用戶自行選擇

實(shí)現(xiàn)上,切換深色模式需要調(diào)用setColorMode()方法將ColorMode設(shè)置為COLOR_MODE_DARK(深色模式),切換淺色模式需要將ColorMode設(shè)置為COLOR_MODE_LIGHT(淺色模式),這樣就可以完成對(duì)應(yīng)用深淺色的手動(dòng)控制。

綜上分析,深色模式適配內(nèi)容如下表所示。

a7b692c0-2a5a-11f0-9310-92fbcf53809c.png

深色模式適配

顏色資源適配

顏色資源適配是將頁(yè)面元素的顏色抽離到限定詞目錄中,讓應(yīng)用在不同的深淺色模式下使用不同限定詞目錄中的顏色值,從而達(dá)成應(yīng)用頁(yè)面元素在深淺色下不同的顏色表現(xiàn)。若應(yīng)用適配代碼存在錯(cuò)誤,那么在切換到深色模式后,頁(yè)面元素會(huì)由于對(duì)比度過(guò)低導(dǎo)致用戶識(shí)別困難,以下為顏色資源適配錯(cuò)誤的效果示例。

上述頁(yè)面效果在淺色模式下顯示正常,但是當(dāng)切換到深色模式后 ,彈窗內(nèi)文字與彈窗背景色不滿足背景色對(duì)比度不低于5:1,用戶識(shí)別彈窗內(nèi)容困難。上述效果的關(guān)鍵問(wèn)題在于使用自定義彈窗時(shí),若未手動(dòng)指定彈窗背景色,系統(tǒng)默認(rèn)對(duì)彈窗背景色做了深淺色適配,但是彈窗內(nèi)的具體內(nèi)容特別是開發(fā)者的自定義內(nèi)容無(wú)法自動(dòng)適配深色模式,于是當(dāng)系統(tǒng)切換到深色模式下,彈窗背景色自動(dòng)深色,而彈窗內(nèi)容保持與淺色模式一致的顏色,導(dǎo)致內(nèi)容無(wú)法看清,該類問(wèn)題對(duì)應(yīng)解決方案有以下兩種。

方式一:使用系統(tǒng)資源(優(yōu)先建議)。使用受支持的系統(tǒng)資源會(huì)自動(dòng)適配深色模式,開發(fā)者可查看系統(tǒng)資源獲取受支持的系統(tǒng)資源。

方式二:使用自定義主題,若開發(fā)者需要定制在深淺色模式下不同的顏色表現(xiàn),就需要使用自定義主題。

媒體資源適配

媒體資源適配即在深淺模式下采用不同顏色表現(xiàn)的圖片或圖標(biāo)等媒體資源,從而達(dá)成更好的用戶體驗(yàn),以下為應(yīng)用內(nèi)的圖標(biāo)未適配深色模式的效果示例,未適配內(nèi)容以黃虛線框出。

上述錯(cuò)誤示例效果的關(guān)鍵問(wèn)題在于對(duì)于應(yīng)用內(nèi)的圖標(biāo)并未做深色模式下的適配,于是圖標(biāo)的顏色與應(yīng)用淺色時(shí)一致,而兩者對(duì)比度過(guò)低,導(dǎo)致切換到深色模式后應(yīng)用內(nèi)圖標(biāo)無(wú)法看清,媒體資源的適配有以下兩種方式。

方式一:若適配簡(jiǎn)單圖標(biāo)并且圖標(biāo)格式為SVG類型,那么只需要結(jié)合顏色資源適配并使用Image組件的fillColor屬性(若使用Symbol則使用SymbolGlyph的fontColor屬性),在不同的深淺色下設(shè)置為不同的填充色即可完成深色模式的適配。

方式二:若需要適配圖片或適配圖標(biāo)但圖標(biāo)不為SVG類型,那么就需要使用資源目錄的方式進(jìn)行深色模式的適配。

狀態(tài)欄適配

狀態(tài)欄適配即在深淺色模式下,采用不同的狀態(tài)欄背景色與字體顏色。若應(yīng)用未啟用沉浸式,那么默認(rèn)情況下,淺色模式下狀態(tài)欄為白底黑字,深色模式下狀態(tài)欄為黑底白字。當(dāng)應(yīng)用啟用了沉浸式,狀態(tài)欄背景色與應(yīng)用背景色保持一致,而狀態(tài)欄文字會(huì)默認(rèn)在淺色模式下保持黑色,而在深色模式下保持白色,若應(yīng)用在淺色模式下設(shè)置了深色背景或在深色模式下設(shè)置了淺色背景,都會(huì)導(dǎo)致狀態(tài)欄背景色與狀態(tài)欄字體顏色對(duì)比度過(guò)低,導(dǎo)致顯示異常。錯(cuò)誤效果示例如下圖,應(yīng)用設(shè)置了沉浸式并在淺色模式下具有純黑色的背景色,導(dǎo)致狀態(tài)欄的日期電量等文本內(nèi)容無(wú)法看清。

上述錯(cuò)誤效果的主要問(wèn)題在于頁(yè)面的背景色固定為黑色,當(dāng)系統(tǒng)切換到淺色模式后,狀態(tài)欄文字默認(rèn)切換到黑色,此時(shí)狀態(tài)欄背景色與文字顏色一致,于是狀態(tài)欄中的文字就不可見了,此類問(wèn)題修改方案有以下兩種。

若可以將背景色做深淺色適配,則采用顏色資源適配的方案對(duì)應(yīng)用背景色進(jìn)行適配,背景色適配時(shí)需考慮到狀態(tài)欄文字在深淺色模式下的默認(rèn)表現(xiàn)。

若背景色無(wú)法做深淺色適配,或做了深淺色適配,但是沉浸式顏色與默認(rèn)的狀態(tài)欄文字顏色對(duì)比度較低,這種情況下需要獲取當(dāng)前的深淺色并動(dòng)態(tài)設(shè)置狀態(tài)欄字體顏色。

Web頁(yè)面適配深色模式

Web頁(yè)面的內(nèi)容不會(huì)自動(dòng)跟隨系統(tǒng)顏色模式進(jìn)行切換。

若需要Web內(nèi)容進(jìn)行深淺色適配,就需要在Web頁(yè)面內(nèi)通過(guò)媒體查詢的方式單獨(dú)設(shè)置深色模式下的頁(yè)面樣式,并通過(guò)Web組件的darkMode()屬性來(lái)控制Web頁(yè)面是否啟用深色模式。

具體實(shí)現(xiàn)開發(fā)者可參考:Web組件設(shè)置深色模式。

總結(jié)

本文系統(tǒng)解析了深色模式適配的技術(shù)原理,并詳細(xì)闡述了適配實(shí)施過(guò)程中的關(guān)鍵調(diào)整項(xiàng),通過(guò)差異化的適配策略對(duì)界面元素進(jìn)行針對(duì)性處理,即可實(shí)現(xiàn)完整的深淺色主題切換。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 人機(jī)交互
    +關(guān)注

    關(guān)注

    12

    文章

    1242

    瀏覽量

    56310
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1286

    瀏覽量

    71055
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2146

    瀏覽量

    32506

原文標(biāo)題:HarmonyOS應(yīng)用深色模式適配方案

文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    介紹一種OpenAtom OpenHarmony輕量系統(tǒng)適配方案

    本文在不改變?cè)邢到y(tǒng)基礎(chǔ)框架的基礎(chǔ)上, 介紹了一種OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)輕量系統(tǒng)適配方案
    的頭像 發(fā)表于 03-05 09:24 ?1697次閱讀
    介紹一種OpenAtom OpenHarmony輕量系統(tǒng)<b class='flag-5'>適配方案</b>

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-Web設(shè)置深色模式

    Web組件支持對(duì)前端頁(yè)面進(jìn)行深色模式配置。 通過(guò)darkMode()接口可以配置不同的深色模式,WebDarkMode.Off模式表示關(guān)閉
    發(fā)表于 05-09 15:37

    有幾個(gè)關(guān)于MCUXpresso深色主題(模式)設(shè)置的問(wèn)題求解

    我有幾個(gè)關(guān)于 MCUXpresso 深色主題(模式)設(shè)置的問(wèn)題。 請(qǐng)參閱附件。 我想修改 C 代碼的注釋顏色和用于在項(xiàng)目資源管理器中突出顯示源文件的顏色。 這些在哪里發(fā)生了變化?
    發(fā)表于 03-20 06:04

    移動(dòng)端適配方案

    移動(dòng)端適配方案
    發(fā)表于 05-17 17:08

    無(wú)線carplay適配方案展示

    領(lǐng)克無(wú)線carplay適配方案展示相信很多領(lǐng)克的車主遇到車機(jī)卡的問(wèn)題,無(wú)奈廠商沒(méi)有內(nèi)置carplay方案,導(dǎo)致很多蘋果手機(jī)的領(lǐng)克車主無(wú)法使用。AUFUN carplay 是專業(yè)的carplay方案
    發(fā)表于 09-15 09:07

    HarmonyOS Connect設(shè)備開發(fā)的入門資料

    HarmonyOS Connect設(shè)備開發(fā),相信不少剛?cè)腴T的開發(fā)者都被這些問(wèn)題所困擾,面對(duì)五花八門的開發(fā)板不知道該怎么選取?芯片、模組、開發(fā)板傻傻分不清?如何使用代碼控制開發(fā)板?一、芯片適配方案芯片
    發(fā)表于 03-15 15:14

    基于Android的全屏幕適配方案

    由于Android碎片化嚴(yán)重,屏幕適配一直是開發(fā)中較為頭疼的問(wèn)題。面對(duì)市面上五花八門的屏幕大小與分辨率, Android基于dp與res目錄名稱來(lái)適配方案已無(wú)法滿足一次編寫全屏幕適配
    發(fā)表于 05-04 08:41 ?2118次閱讀

    蘋果 iOS 13版本更新大爆料,深色模式或?qū)⑷毕?/a>

    3月14日消息 根據(jù)之前爆料,在iOS 13大版本更新中,深色模式仍將缺席,這個(gè)模式將會(huì)在iOS 13.1版本更新中才會(huì)出現(xiàn)。因此,期待iOS深色
    的頭像 發(fā)表于 03-14 16:40 ?3064次閱讀

    使用深色模式的iPhone續(xù)航更持久

    10月21日消息,新版iOS以及眾多安卓手機(jī)中紛紛加入的“深色模式”真能幫iPhone省電嗎? 本周PhoneBuff對(duì)這個(gè)功能做了測(cè)試。
    的頭像 發(fā)表于 10-21 15:34 ?4369次閱讀

    微信7.0.12版除了新增深色模式支持還加入這樣一個(gè)貼心的改進(jìn)

    爭(zhēng)議多時(shí)之后,微信今天更新了7.0.12版,終于支持了深色模式(黑暗模式),而且iOS上跟系統(tǒng)啟動(dòng),不用自己設(shè)置。
    的頭像 發(fā)表于 03-23 10:27 ?2398次閱讀

    微信發(fā)布安卓7.0.13內(nèi)測(cè)版 加入深色模式支持

    今天,微信發(fā)布最新的安卓7.0.13內(nèi)測(cè)版,終于帶來(lái)了深色模式。與iOS一致,可隨系統(tǒng)的設(shè)置,切換為深色模式。
    的頭像 發(fā)表于 03-25 10:22 ?3388次閱讀

    如何將Ubuntu系統(tǒng)完全設(shè)置為深色模式

    完成設(shè)置以后,使用了 GTK3 的應(yīng)用程序都可以跟隨深色模式。因此你會(huì)看到系統(tǒng)中包括文本編輯器、終端、LibreOffice 等在內(nèi)的大多數(shù)應(yīng)用程序都已經(jīng)切換成深色了。但未使用 GTK3 的應(yīng)用程序可能并沒(méi)有跟隨進(jìn)入
    的頭像 發(fā)表于 05-20 09:21 ?4492次閱讀

    百度地圖上線iOS端深色模式,降低暗光環(huán)境下的視覺疲勞

    經(jīng)過(guò)了多年的等待之后,蘋果終于在去年9月發(fā)布的iOS 13中加入了深色模式,OLED屏的iPhone續(xù)航得到了一定的提升。 不過(guò)iOS發(fā)布后許久,國(guó)內(nèi)的地圖APP并沒(méi)有及時(shí)的適配深色
    的頭像 發(fā)表于 11-19 16:31 ?2972次閱讀

    谷歌搜索測(cè)試開發(fā)網(wǎng)頁(yè)版深色模式功能

    在移動(dòng)端,APP及網(wǎng)頁(yè)跟隨系統(tǒng)自適應(yīng)切換到深色模式已經(jīng)不再稀奇。但在PC端,想要實(shí)現(xiàn)這一點(diǎn)卻難上加難。
    的頭像 發(fā)表于 02-18 16:00 ?2106次閱讀

    長(zhǎng)期用眼不再怕!NineData SQL 窗口支持深色模式

    NineData SQL開發(fā)工具現(xiàn)已支持深色模式,為用戶提供更舒適的使用體驗(yàn)。長(zhǎng)時(shí)間暴露在明亮屏幕下容易引發(fā)眼睛疲勞和不適,而深色模式通過(guò)降低屏幕亮度減輕了眼睛的負(fù)擔(dān)。此外,
    的頭像 發(fā)表于 09-26 10:24 ?539次閱讀
    長(zhǎng)期用眼不再怕!NineData SQL 窗口支持<b class='flag-5'>深色</b><b class='flag-5'>模式</b>