夜间模式遇到的坑

前文介绍了经过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>
相关文章
相关标签/搜索