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