夜间模式遇到的坑

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

前文介绍了通过Android Support Library 夜间模式的实现,在实现过程中遇到一些坑,现记录以下

一、在设置颜色值的时候,一不小心只在夜间模式中的color设置了,日间模式没有设置,应用切换到夜间模式,可以正常访问,日间模式调用这个颜色值的页面会崩溃,报xml找不到这个颜色值,所以日间模式有,夜间模式无,没问题,夜间模式会读取日间模式的颜色值,相反则会崩溃。

二、视频播放器全屏播放,切至横屏,再切换回竖屏,日间模式正常,夜间模式下会导致原有页面 重走一遍生命周期,虽然AndroidManifest.xml中设置了

android:configChanges="orientation|keyboardHidden|screenSize“

通过调研发现,夜间模式下横竖屏切换还有触发UImode ,因此需设置

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

三、按照原理,日间模式设置了某个drawable selector背景,只需设置其中日、夜中对应的颜色值即可,

但某些手机切换了日、夜间模式会出现部分黑、部分白的混乱情况,即使recreate 也无效,原因是可能读取了上一次的缓存,解决方式是日、夜间各设置一套drawable

四 夜间模式下,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中webview 设置背景颜色

 

 

 

 

转载于:https://my.oschina.net/u/3729392/blog/1602507

你可能感兴趣的:(夜间模式遇到的坑)