android support library github,Android Support Library 之 夜间模式
原標(biāo)題:Android Support Library 之 夜間模式
前言
夜間模式實(shí)現(xiàn)方式:1、通過切換theme來實(shí)現(xiàn)夜間模式。優(yōu)點(diǎn):可以匹配多套主題,并不局限于黑白模式缺點(diǎn):需要大量定義主題詳見博客:http://wuxiaolong.me/2015/08/19/ChangeTheme/
2、通過修改uiMode來切換夜間模式。修改uimode是修改Configuration,這種主題切換只限于黑白模式,沒有其他模式,不需要大量定義主題,即本文介紹的內(nèi)容。
效果預(yù)覽
如何使用
第一步
(1)app/build.gradle
compile'com.android.support:appcompat-v7:25.3.1'
(2)Activity須繼承AppCompatActivity
(3)Theme.AppCompat.DayNight
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
false
true
第二步
應(yīng)用全局主題推薦在 Application 的onCreate()中進(jìn)行設(shè)置AppCompatDelegate.setDefaultNightMode(int mode);
它有四個(gè)可選值,分別是:MODE_NIGHT_NO: 使用亮色(light)主題,不使用夜間模式MODE_NIGHT_YES:使用暗色(dark)主題,使用夜間模式MODE_NIGHT_AUTO:根據(jù)當(dāng)前時(shí)間自動切換 亮色(light)/暗色(dark)主題MODE_NIGHT_FOLLOW_SYSTEM(默認(rèn)選項(xiàng)):設(shè)置為跟隨系統(tǒng),通常為 MODE_NIGHT_NO
第三步
動態(tài)的設(shè)定主題,需要切換主題調(diào)用:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
//調(diào)用recreate()使設(shè)置生效
recreate();
注意事項(xiàng)
setDefaultNightMode()與setLocalNightMode()區(qū)別
AppCompatDelegate.setDefaultNightMode()是對整個(gè)App中theme為DayNight主題生效getDelegate().setLocalNightMode()只對特定的組件生效
夜間資源
把夜晚主題的color等資源放在values-night中,程序在運(yùn)行時(shí)就會自動調(diào)用
獲取應(yīng)用當(dāng)前的主題
intcurrentNightMode=getResources().getConfiguration().uiMode
&Configuration.UI_MODE_NIGHT_MASK;
switch(currentNightMode){
caseConfiguration.UI_MODE_NIGHT_NO:
// Night mode is not active, we're in day time
caseConfiguration.UI_MODE_NIGHT_YES:
// Night mode is active, we're at night!
caseConfiguration.UI_MODE_NIGHT_UNDEFINED:
// We don't know what mode we're in, assume notnight
}
如果切換了主題,本想通過這個(gè)方法,下次啟動程序的時(shí)候,來設(shè)置。發(fā)現(xiàn)并沒有記住這個(gè)值,還是只能SharedPreference讀取,然后根據(jù)用戶設(shè)置,調(diào)用 setDefaultNightMode() 方法。
適配文字圖片
盡可能的使用主題屬性(theme attributes)
文字顏色
android:textColor="?android:attr/textColorPrimary"
android:textColor="?android:textColorPrimary"
系統(tǒng)默認(rèn)的文字顏色。在亮色(light)主題下,顏色接近黑色,在暗色(dark)主題下,顏色接近白色。有兩種寫法,次標(biāo)題和三標(biāo)題同樣。
次標(biāo)題
android:textColor="?android:attr/textColorSecondary"
三標(biāo)題
android:textColor="?android:attr/textColorTertiary"
系統(tǒng)默認(rèn)的背景顏色
android:background="?android:attr/colorBackground"
android:background="?android:colorBackground"
點(diǎn)擊效果
android:background="?android:attr/selectableItemBackground"
android:background="?android:selectableItemBackground"
android:background="?attr/selectableItemBackground"
系統(tǒng)默認(rèn)的圖標(biāo)顏色
如vector里顏色:
android:fillColor="?attr/colorControlNormal"
源碼地址
https://github.com/WuXiaolong/DesignSupportLibrarySample
iOS 用戶贊賞通道,謝謝支持
責(zé)任編輯:
總結(jié)
以上是生活随笔為你收集整理的android support library github,Android Support Library 之 夜间模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈希值+非对称加密+网络+数字签名,你真
- 下一篇: python matplotlib 散点