webview 日夜间模式
时间: 2023-07-18 18:38:05 浏览: 162
Android WebView添加夜间模式
4星 · 用户满意度95%
实现 WebView 的日夜间模式可以通过设置 WebView 的背景颜色和文字颜色来实现。具体方法如下:
1. 在 res/values 文件夹下创建一个 colors.xml 文件,设置不同主题下的背景颜色和文字颜色:
```xml
<resources>
<color name="bg_color_day">#FFFFFF</color>
<color name="text_color_day">#000000</color>
<color name="bg_color_night">#000000</color>
<color name="text_color_night">#FFFFFF</color>
</resources>
```
2. 在 Activity 的 onCreate 方法中获取 WebView 的实例,并设置 WebView 的背景颜色和文字颜色:
```java
WebView webView = findViewById(R.id.web_view);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
if (isNightMode) {
webView.setBackgroundColor(getResources().getColor(R.color.bg_color_night));
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
} else {
webView.setBackgroundColor(getResources().getColor(R.color.bg_color_day));
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
```
其中,isNightMode 是一个 boolean 类型的变量,表示当前是否为夜间模式。
3. 在 WebViewClient 的 onPageFinished 方法中设置 WebView 的文字颜色:
```java
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (isNightMode) {
view.loadUrl("javascript:(function(){\n" +
" var css = 'html {-webkit-filter: invert(100%);' +\n" +
" '-moz-filter: invert(100%);' +\n" +
" '-o-filter: invert(100%);' +\n" +
" '-ms-filter: invert(100%); }';\n" +
" var head = document.getElementsByTagName('head')[0];\n" +
" var style = document.createElement('style');\n" +
" style.type = 'text/css';\n" +
" if (style.styleSheet){\n" +
" style.styleSheet.cssText = css;\n" +
" } else {\n" +
" style.appendChild(document.createTextNode(css));\n" +
" }\n" +
" head.appendChild(style);\n" +
"})();");
} else {
view.loadUrl("javascript:(function(){\n" +
" var css = 'html {-webkit-filter: invert(0%);' +\n" +
" '-moz-filter: invert(0%);' +\n" +
" '-o-filter: invert(0%);' +\n" +
" '-ms-filter: invert(0%); }';\n" +
" var head = document.getElementsByTagName('head')[0];\n" +
" var style = document.createElement('style');\n" +
" style.type = 'text/css';\n" +
" if (style.styleSheet){\n" +
" style.styleSheet.cssText = css;\n" +
" } else {\n" +
" style.appendChild(document.createTextNode(css));\n" +
" }\n" +
" head.appendChild(style);\n" +
"})();");
}
}
```
这里使用 JavaScript 的方式实现 WebView 的文字反转效果,从而实现夜间模式下的白色文字和黑色背景。
以上就是实现 WebView 的日夜间模式的具体方法。
阅读全文