自从Android WebView的最新更新之后,当通过设置WebView的层类型为View.LAYER_TYPE_SOFTWARE 禁用硬件加速时,包含HTML5画布的网页将无法正确显示。是否有解决此问题的方法?
如果我省略以下Java代码行: webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 那么内容会被正确显示。
Java代码:
期望结果: 黑色边框内显示红色线性渐变 https://heiri-web.ch/Gradient.png 实际结果: 空白的黑色边框 https://heiri-web.ch/Empty.png
如果我省略以下Java代码行: webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 那么内容会被正确显示。
Java代码:
WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
webView.loadUrl("file:///android_asset/Gradient.html");
Html文件test.html测试:
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
// Create gradient
var grd = ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
// Fill with gradient
ctx.fillStyle = grd;
ctx.fillRect(10,10,150,80);
</script>
</body>
</html>
期望结果: 黑色边框内显示红色线性渐变 https://heiri-web.ch/Gradient.png 实际结果: 空白的黑色边框 https://heiri-web.ch/Empty.png