摘要:而在正式版中,夜間模式也沒有出現(xiàn)。如何開啟這項(xiàng)功能,可以參考少數(shù)派的這一篇文章,幫你找回夜間模式的款應(yīng)用。毫不夸張的說,夜間模式現(xiàn)在已經(jīng)是閱讀類的標(biāo)配了。事實(shí)上,日間模式與夜間模式就是給定義并應(yīng)用兩套不同顏色的主題。
前言
Android 6.0 Marshmallow 預(yù)覽版中曾經(jīng)短暫出現(xiàn)過相關(guān)的夜間模式的功能,只是在正式版中被移除了,在Android 7.0 Nougat上,用戶們?cè)俅谓?jīng)歷了「得而復(fù)失」的遺憾,在開發(fā)者預(yù)覽版中,夜間模式和暗色模式先是開啟,然后有再次被移除。而在正式版中,夜間模式也沒有出現(xiàn)。但其實(shí)相關(guān)的代碼一直存在于系統(tǒng)中,只是默認(rèn)沒有被開啟。如何開啟這項(xiàng)功能,可以參考少數(shù)派的這一篇文章,幫你找回 Android 7.0 夜間模式的 2 款應(yīng)用。
不過,今天要介紹的主要內(nèi)容并不是關(guān)于系統(tǒng)的夜間模式,而是如何給我們開發(fā)的APP添加夜間模式的功能。毫不夸張的說,夜間模式現(xiàn)在已經(jīng)是閱讀類App的標(biāo)配了。事實(shí)上,日間模式與夜間模式就是給APP定義并應(yīng)用兩套不同顏色的主題。用戶可以自動(dòng)或者手動(dòng)的開啟。我們先看兩個(gè)我認(rèn)為實(shí)現(xiàn)地很優(yōu)雅的例子:知乎和Twitter。
這兩個(gè)APP在切換的工程中,并沒有出現(xiàn)閃現(xiàn)黑屏的情況,切換也比較順滑。我們的目標(biāo)就是利用Support Library實(shí)現(xiàn)同樣的效果。
實(shí)現(xiàn) 添加依賴compile "com.android.support:appcompat-v7:25.1.0"
由于Support Library在23.2.0的版本中才添加了Theme.AppCompat.DayNight主題,所以依賴的版本必須是高于23.2.0的,并且,這個(gè)特性支持的最低SDK版本為14,所以,需要兼容Android 4.0的設(shè)備,是不能使用這個(gè)特性的,在API Level 14以下的設(shè)備會(huì)默認(rèn)使用亮色主題。不過現(xiàn)在4.0以下的設(shè)備應(yīng)該比較少了吧,畢竟微信的minSdkVersion都設(shè)置為14了。
準(zhǔn)備資源
讓我們自己的主題繼承并應(yīng)用DayNight主題。
新建夜間模式資源文件夾:在res目錄下新建values-night文件夾,然后在此目錄下新建colors.xml文件在夜間模式下的應(yīng)用的資源。當(dāng)然也可以根據(jù)需要新建drawable-night,layout-night等后綴為-night的夜間資源文件夾。
我的values和values-night目錄下的colors.xml的內(nèi)容如下:
#009688 #00796B #009688 #616161 @android:color/white