}
2. Android5.0及以上版本
在Android5.0及以上版本,Android对WebView
进行了优化,为了减少内存使用和提高性能,使用WebView
加载网页时只绘制显示部分。如果我们不做处理,仍然使用上述代码截图的话,就会出现只截到屏幕内显示的WebView
内容,其它部分是空白的情况。
这时候,我们通过调用WebView.enableSlowWholeDocumentDraw()
方法可以关闭这种优化,但要注意的是,该方法需要在WebView
实例被创建前就要调用,否则没有效果。所以我们在WebView
实例被创建前加入代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
android.webkit.WebView.enableSlowWholeDocumentDraw();
}
根据Google
文档中描述,capturePicture()
方法已不鼓励使用,推荐我们通过webView
的onDraw(Canvas)
去获取图像,所以这里我们去拿到网页的宽高后,就调用webView.draw(Canvas)
方法生成webView
截图。
private void captureWebViewLollipop(WebView webView) {
float scale = webView.getScale();
int wi