淺談Android Support Library 23.2新增夜間模式主題

        前幾天剛剛發佈的Android Support Library 23.2,增加了夜間主題,實在是太令人興奮了,有了這個主題再做夜間模式功能實在是太簡單了。下面我就來介紹一下。

       該夜間主題是Theme,AppCompat.DayNight,與它相關的還有

DayNight.NoActionBar,DayNight.DarkActionBar,DayNight.Dialog.而且其主題向下兼容到了API14。這個主題可以讓應用程序很輕鬆的支持白天和夜晚的主題

具體怎麼做呢,看下面

第一步 

    應該在AndroidManifest.xml中設置theme爲Theme,AppCompat.DayNight

第二步      

    需要重寫AppCompatDelegate中的值也就是AppCompatDelegate.setDefaultNightMode()或者或通過getDelegate()得到AppCompatDelegate對象,並使用setLocalNightMode()來設置當前的Activity或Dialog的主題

     該模式有三種

    1. AppCompatDelegate.MODE_NIGHT_AUTO,他會時刻知道你最後的位置和 時間(如果您的應用程序已開啓位置權限)用於白天和黑夜之間自動切換的 依據

     2. AppCompatDelegate.MODE_NIGHT_NO強制設定了從不使用夜晚主題。

     3. AppCompatDelegate.MODE_NIGHT_YES則強制設定了一直使用夜晚主題。

         例如

           <span style="font-size:24px;">getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);</span>

         這句代碼一定要寫在setContentView()之前纔有效,因爲這是設置主題的

第三步  

     把白天和夜晚的資源分開。例如values,values-night.

    把夜晚主題的color等資源放在values-night中,程序在運行時就會自動調用

 

不足之處:

     Android Support Library 23.2發佈的這個夜間模式貌似只適用於多套資源的情況,如果只有1套資源,特別是圖片,我們需要獲取當前是白天還是夜間,對圖片透明度進行處理,但是API提供的AppCompatDelegate類中並沒有獲取當前是白天還是夜間的方法,只有獲取模式的方法。所以大家還是得根據項目需求而定

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章