android support library github,Android Support Library 之 夜间模式
原標題:Android Support Library 之 夜間模式
前言
夜間模式實現方式:1、通過切換theme來實現夜間模式。優點:可以匹配多套主題,并不局限于黑白模式缺點:需要大量定義主題詳見博客:http://wuxiaolong.me/2015/08/19/ChangeTheme/
2、通過修改uiMode來切換夜間模式。修改uimode是修改Configuration,這種主題切換只限于黑白模式,沒有其他模式,不需要大量定義主題,即本文介紹的內容。
效果預覽
如何使用
第一步
(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
第二步
應用全局主題推薦在 Application 的onCreate()中進行設置AppCompatDelegate.setDefaultNightMode(int mode);
它有四個可選值,分別是:MODE_NIGHT_NO: 使用亮色(light)主題,不使用夜間模式MODE_NIGHT_YES:使用暗色(dark)主題,使用夜間模式MODE_NIGHT_AUTO:根據當前時間自動切換 亮色(light)/暗色(dark)主題MODE_NIGHT_FOLLOW_SYSTEM(默認選項):設置為跟隨系統,通常為 MODE_NIGHT_NO
第三步
動態的設定主題,需要切換主題調用:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
//調用recreate()使設置生效
recreate();
注意事項
setDefaultNightMode()與setLocalNightMode()區別
AppCompatDelegate.setDefaultNightMode()是對整個App中theme為DayNight主題生效getDelegate().setLocalNightMode()只對特定的組件生效
夜間資源
把夜晚主題的color等資源放在values-night中,程序在運行時就會自動調用
獲取應用當前的主題
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
}
如果切換了主題,本想通過這個方法,下次啟動程序的時候,來設置。發現并沒有記住這個值,還是只能SharedPreference讀取,然后根據用戶設置,調用 setDefaultNightMode() 方法。
適配文字圖片
盡可能的使用主題屬性(theme attributes)
文字顏色
android:textColor="?android:attr/textColorPrimary"
android:textColor="?android:textColorPrimary"
系統默認的文字顏色。在亮色(light)主題下,顏色接近黑色,在暗色(dark)主題下,顏色接近白色。有兩種寫法,次標題和三標題同樣。
次標題
android:textColor="?android:attr/textColorSecondary"
三標題
android:textColor="?android:attr/textColorTertiary"
系統默認的背景顏色
android:background="?android:attr/colorBackground"
android:background="?android:colorBackground"
點擊效果
android:background="?android:attr/selectableItemBackground"
android:background="?android:selectableItemBackground"
android:background="?attr/selectableItemBackground"
系統默認的圖標顏色
如vector里顏色:
android:fillColor="?attr/colorControlNormal"
源碼地址
https://github.com/WuXiaolong/DesignSupportLibrarySample
iOS 用戶贊賞通道,謝謝支持
責任編輯:
總結
以上是生活随笔為你收集整理的android support library github,Android Support Library 之 夜间模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈希值+非对称加密+网络+数字签名,你真
- 下一篇: android int 首位值_Andr