国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android app的暗黑模式適配實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了Android app的暗黑模式適配實(shí)現(xiàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

原文地址: Android app的暗黑模式適配實(shí)現(xiàn) - Stars-One的雜貨小窩

很久之前放在草稿箱的一篇簡(jiǎn)單筆記,是之前藍(lán)奏云批量下載工具Android版本實(shí)現(xiàn)暗黑主題的適配記錄

本文所說的這里的暗黑主題,應(yīng)該只支持Android10系統(tǒng),不過我手頭的Flyme系統(tǒng)(Android9)上測(cè)試也有效果,其他低版本則沒有測(cè)試(不過之后版本也沒用戶反饋過此問題應(yīng)該視作都兼容了吧...)

效果的話,沒有搞太復(fù)雜,APP的主題會(huì)自動(dòng)隨著系統(tǒng)主題變化(沒搞那種APP內(nèi)部切換主題)

寫的比較簡(jiǎn)陋,各位見笑了 ??

效果

Android app的暗黑模式適配實(shí)現(xiàn)

原理說明

Android10開始,支持深色主題,我們想要實(shí)現(xiàn),就是在valuesvalues-night下寫2個(gè)themes.xml,里面使用不同的主題色即可

由于APP開發(fā)時(shí)間比較久,如果想要適配深色主題,要改的地方可太多了

于是我這里就是選擇了亮色和暗色都設(shè)置一套APP的文本顏色和背景顏色,之后即可對(duì)全局APP的文字和組件背景色進(jìn)行覆蓋,從而一鍵式完成暗黑模式的適配工作

顏色文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#03A9F4</color>
    <color name="colorPrimaryDark">#0288D1</color>
    <color name="colorAccent">#40C4FF</color>
    <color name="colorGrey">#9e9e9e</color>
    <color name="colorBlack">#000000</color>
    <color name="colorBackground">#f1f1f1</color>
    <color name="color_rose">#dd1c73</color>
</resources>

亮色主題:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <!--用作背景色        -->
    <item name="colorOnPrimary">@color/white</item>
    <!-- 第二背景色,與上面的反過來       -->
    <item name="colorOnSecondary">@color/gray_600</item>

    <item name="colorAccent">@color/colorAccent</item>

    <item name="android:textColor">@color/black</item>
    <item name="backgroundColor">@color/colorPrimary</item>
    <item name="android:statusBarColor">?attr/colorPrimary</item>
</style>

暗色主題:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimaryDark</item>
    <item name="colorPrimaryDark">@color/colorPrimary</item>
    <!--用作背景色        -->
    <item name="colorOnPrimary">@color/black</item>
    <item name="colorOnSecondary">@color/white</item>

    <item name="colorAccent">@color/colorAccent</item>

    <item name="android:textColor">@color/white20</item>
    <item name="backgroundColor">@color/colorPrimaryDark</item>
    <item name="android:statusBarColor">?attr/colorPrimary</item>
</style>

上文提到的3個(gè)屬性即是覆蓋了系統(tǒng)的文本顏色和背景顏色,因?yàn)锳PP是沉浸式狀態(tài)欄設(shè)計(jì),所以我狀態(tài)欄的顏色也一起設(shè)置了

<item name="android:textColor">@color/white20</item>
<item name="backgroundColor">@color/colorPrimaryDark</item>

<item name="android:statusBarColor">?attr/colorPrimary</item>

PS:上述我設(shè)置的暗色主題的字體顏色是有點(diǎn)灰色white20,各位可以看著調(diào)整下

官方的推薦是使用下面4個(gè)屬性:

  • ?attr/colorControlNormal 一種通用圖標(biāo)顏色。該顏色包含一個(gè)停用狀態(tài)
  • ?android:attr/textColorPrimary: 這是一種通用型文本顏色。它在淺色主題背景下接近于黑色,在深色主題背景下接近于白色。該顏色包含一個(gè)停用狀態(tài)。
  • ?attr/colorSurface:它代表表面的顏色,通常是應(yīng)用程序的主要背景色或容器的背景色。在淺色主題中,通常為白色或淺灰色,在深色主題中,通常為黑色或深灰色。
  • ?attr/colorOnSurface:屬性用于設(shè)置界面元素的前景顏色,如文本、圖標(biāo)等。它代表了在 colorSurface 背景上顯示的顏色。在淺色主題中,通常為深色(如黑色)以提供對(duì)比度,在深色主題中,通常為淺色(如白色)。

如果是在剛開始寫一個(gè)新的APP,注意使用上述顏色,之后就比較好的可以支持暗黑模式了,如下面代碼

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="開始說明"
    android:textColor="?android:attr/textColorPrimary"
    android:textSize="18sp"
    android:textStyle="bold" />

其他補(bǔ)充

1.Toolbar顏色變黑色

這里發(fā)現(xiàn)設(shè)置的Toolbar在暗黑模式下是變?yōu)榱撕谏?但是我不想要黑色,想要我自己設(shè)置的暗一點(diǎn)藍(lán)色效果,于是使用了MaterialToolbar,并對(duì)其進(jìn)行了屬性的設(shè)置就可達(dá)到需要的效果

<com.google.android.material.appbar.MaterialToolbar
    android:id="@+id/toolbar"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    app:navigationIconTint="?attr/colorOnPrimary"
    app:popupTheme="@style/AppTheme"
    app:theme="@style/AppTheme"
    app:titleTextColor="?attr/colorOnPrimary"
    app:title="@string/app_name"/>
  • background 背景色
  • navigationIconTint 左側(cè)導(dǎo)航圖標(biāo)(返回箭頭)的圖標(biāo)顏色
  • titleTextColor Toolbar的標(biāo)題顏色

2.獲取顏色代碼方法

想要在代碼里獲取?android:attr/textColorPrimary這個(gè)顏色,如何獲取?

@ColorInt
fun Context.getColorResCompat(@AttrRes id: Int): Int {
    val resolvedAttr = TypedValue()
    this.theme.resolveAttribute(id, resolvedAttr, true)
    val colorRes = resolvedAttr.run { if (resourceId != 0) resourceId else data }
    return ContextCompat.getColor(this, colorRes)
}

使用:文章來源地址http://www.zghlxwxcb.cn/news/detail-746122.html

val color = getColorResCompat(android.R.attr.textColorPrimary)
textview.setTextColor(color)

參考

  • 深色主題背景 ?|? Android 開發(fā)者 ?|? Android Developers
  • 以編程方式將文本顏色設(shè)置為主要的android textview |
  • Android夜間模式的簡(jiǎn)單實(shí)現(xiàn)_android 夜間模式_xuzhb24的博客-CSDN博客
  • Android 適配深色模式的總結(jié) - 掘金

到了這里,關(guān)于Android app的暗黑模式適配實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Android】app應(yīng)用內(nèi)版本更新升級(jí)(DownloadManager下載,適配Android6.0以上所有版本)

    【Android】app應(yīng)用內(nèi)版本更新升級(jí)(DownloadManager下載,適配Android6.0以上所有版本)

    版本的升級(jí)和更新是一個(gè)線上App所必備的功能,App的升級(jí)安裝包主要通過 應(yīng)用商店 或者 應(yīng)用內(nèi)下載 兩種方式獲得,大部分app這兩種方式都會(huì)具備,應(yīng)用商店只需要上傳對(duì)應(yīng)平臺(tái)審核通過即可,而應(yīng)用內(nèi)更新一般是通過以下幾種方式: 1.集成第三方庫如 appupdateX、bugly 的更新

    2024年02月11日
    瀏覽(32)
  • vue2自定義切換主題 dark暗黑主題(暗黑模式)

    vue2自定義切換主題 dark暗黑主題(暗黑模式)

    業(yè)務(wù)要求要做一個(gè)主題色切換,類似于暗黑模式,以前沒有做過于是在網(wǎng)絡(luò)上搜羅現(xiàn)成的解決方案,由于是vue2的項(xiàng)目,找了很久都沒有找到一個(gè)好的方便的解決方案,最后在github找到一個(gè)使用css3的解決方案,覺得十分不錯(cuò),也很簡(jiǎn)單明了,于是就拿來直接用了,參考的gith

    2024年02月15日
    瀏覽(23)
  • 暗黑2能用Java開發(fā)?還能生成APP?

    最近燒哥發(fā)現(xiàn)個(gè)寶藏項(xiàng)目,竟然用Java開發(fā)了暗黑2出來。 眾所周知,暗黑2是暴雪開發(fā)的一款經(jīng)典游戲,距今雖有20多年,仍然有很多粉絲。 粉絲延續(xù)熱情的方式有很多,一種是做Mod,比如魔電,對(duì)怪物、技能、物品、場(chǎng)景、甚至游戲機(jī)制都有大改,目前還在定期更新,并有戰(zhàn)

    2024年02月13日
    瀏覽(17)
  • Android 白天黑夜模式切換適配及引起的Activity銷毀重啟解決

    Android 白天黑夜模式切換適配及引起的Activity銷毀重啟解決

    目錄 一、白夜模式切換,Activity銷毀重啟解決: 二、 暗黑模式適配 ?1. 添加依賴: ? 2. 復(fù)制下面工具類方法直接使用即可: 3.資源適配: ?4. 適配回調(diào): 5.切換白夜模式注意事項(xiàng): ? ? ? ? 當(dāng)白夜模式切換時(shí),activity會(huì)銷毀重新加載,谷歌是希望重新加載Activity可以刷新頁面UI,但我的

    2023年04月20日
    瀏覽(45)
  • CSS判斷手機(jī)暗黑模式

    CSS判斷手機(jī)暗黑模式

    手機(jī)有個(gè)功能到了晚上會(huì)自動(dòng)變成深色也就是暗黑模式.這種情況下網(wǎng)頁會(huì)自動(dòng)變顏色.如果想自由控制暗黑模式下的html樣式的話,可以用如下方式: 這就只會(huì)在暗黑模式的時(shí)候才生效!

    2024年02月10日
    瀏覽(17)
  • iOS系統(tǒng)暗黑模式

    iOS系統(tǒng)暗黑模式

    暗黑模式顏色適配: 方式1: Assets配置 :在Assets中配置好顏色后,可以通過+colorNamed: 放大獲取到動(dòng)態(tài)顏色。 方式2:代碼配置 ,通過代碼+colorWithDynamicProvider: 可以看出來生成的顏色為UIDynamicProviderColor, 系統(tǒng)使用類簇隱藏了真正的顏色實(shí)現(xiàn)。 當(dāng)用戶選擇的暗黑模式時(shí),會(huì)觸

    2024年02月07日
    瀏覽(14)
  • ant-design-vue 自由切換 暗黑模式dark

    ant-design-vue 自由切換 暗黑模式dark

    思路 引入 dark.css 文件 動(dòng)態(tài)切換 prefixCls 實(shí)現(xiàn)效果 我們來看看官網(wǎng)怎么說的 官網(wǎng)地址 除了 less 定制主題 外,我們還提供了 CSS Variable 版本以支持動(dòng)態(tài)切換主題能力。你可以在 ConfigProvider 進(jìn)行體驗(yàn)。 調(diào)用 ConfigProvider 配置方法設(shè)置主題色: 默認(rèn)情況下,CSS Variable 會(huì)以 --ant 作

    2023年04月21日
    瀏覽(21)
  • vue3 element-plus 暗黑模式(主題切換)簡(jiǎn)易版

    vue3 element-plus 暗黑模式(主題切換)簡(jiǎn)易版

    暗黑模式是指在應(yīng)用程序或操作系統(tǒng)中使用暗色背景和淺色文本的界面設(shè)計(jì)。與傳統(tǒng)的亮色模式相比,暗黑模式具有以下特點(diǎn): 減少眼部疲勞:使用暗色背景可以減少屏幕發(fā)出的藍(lán)光,減輕長時(shí)間使用電子設(shè)備對(duì)眼睛的疲勞程度。這對(duì)于在晚上或低光環(huán)境下使用設(shè)備的人來說

    2024年02月08日
    瀏覽(23)
  • 設(shè)計(jì)模式之適配器模式(Adapter)的C++實(shí)現(xiàn)

    設(shè)計(jì)模式之適配器模式(Adapter)的C++實(shí)現(xiàn)

    在軟件功能開發(fā)中,由于使用環(huán)境的改變,之前一些類的舊接口放在新環(huán)境的功能模塊中不再適用。如何使舊接口能適用于新的環(huán)境?適配器可以解決此類問題。適配器模式:通過增加一個(gè)適配器類,在適配器接口中做一些適配操作,將舊模塊類轉(zhuǎn)換成使用者Client類期望的接

    2024年02月12日
    瀏覽(24)
  • Go和Java實(shí)現(xiàn)適配器模式

    我們通過下面的實(shí)例來演示適配器模式的使用,其中,音頻播放器設(shè)備只能播放 mp3 文件,通過使用一個(gè)更高級(jí) 的音頻播放器來播放 vlc 和 mp4 文件。 適配器模式是作為兩個(gè)不兼容的接口之間的橋梁。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個(gè)獨(dú)立接口的 功能。 這種

    2024年02月14日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包