夜間模式遇到的坑

前文介紹了經過Android Support Library 夜間模式的實現,在實現過程當中遇到一些坑,現記錄如下android

1、在設置顏色值的時候,一不當心只在夜間模式中的color設置了,日間模式沒有設置,應用切換到夜間模式,能夠正常訪問,日間模式調用這個顏色值的頁面會崩潰,報xml找不到這個顏色值,因此日間模式有,夜間模式無,沒問題,夜間模式會讀取日間模式的顏色值,相反則會崩潰。web

2、視頻播放器全屏播放,切至橫屏,再切換回豎屏,日間模式正常,夜間模式下會致使原有頁面 重走一遍生命週期,雖然AndroidManifest.xml中設置了緩存

android:configChanges="orientation|keyboardHidden|screenSize「

經過調研發現,夜間模式下橫豎屏切換還有觸發UImode ,所以需設置app

android:configChanges="orientation|keyboardHidden|screenSize|uiMode"

3、按照原理,日間模式設置了某個drawable selector背景,只需設置其中日、夜中對應的顏色值便可,ui

但某些手機切換了日、夜間模式會出現部分黑、部分白的混亂狀況,即便recreate 也無效,緣由是可能讀取了上一次的緩存,解決方式是日、夜間各設置一套drawablethis

四 夜間模式下,webview h5設置了 黑色背景,app加載會先閃白一下再黑,研究發現會先展現webview 自帶的白色背景指針

解決方案:設置webview背景透明視頻

protected void setWebViewNightModel(WebView webView){
    try {
        if (SharedpreferencesUtil.isNightMode(this)) {
            webView.setBackgroundColor(0); // 設置背景色   xml 必定要設置background 不然此處會報空指針
            webView.getBackground().setAlpha(0); // 設置填充透明度 範圍:0-255
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

}

五 webview 設置透明背景 webView.setBackgroundColor(0);,運行崩潰xml

必定要在xml中webview 設置背景顏色生命週期

 

<WebView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/webView"
    android:background="@color/webviewbg"//  必定要設置背景 不然 webView.setBackgroundColor(0);會報空指針 
    ></WebView>
相關文章
相關標籤/搜索