1.webview 初始化时 设置 渲染层 (不设置此项的话,android 9.0之前的某些页面无法截图)
webView.getSettings().setJavaScriptEnabled(true);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
webView.loadUrl("https://www.baidu.com");
2.webview 可见区域 截图
//webview 截图可见区域
private void webviewCaptureVisible(WebView webView) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Bitmap bitmap = Bitmap.createBitmap(webView.getMeasuredWidth(), webView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Rect rect=new Rect();
webView.getGlobalVisibleRect(rect);//截图区域
PixelCopy.request(getWindow(),rect, bitmap, new PixelCopy.OnPixelCopyFinishedListener() {
@Override
public void onPixelCopyFinished(int copyResult) {//异步回调
Log.e(TAG, "copyResult==" + copyResult + ",thread==" + Thread.currentThread());
if (copyResult == PixelCopy.SUCCESS) {
//bitmap 你的逻辑
//......
}
}
}, new Handler(getMainLooper()));
} else {
webView.setDrawingCacheEnabled(true);
webView.buildDrawingCache();
Bitmap bitmap = webView.getDrawingCache().copy(Bitmap.Config.ARGB_8888, true);
webView.destroyDrawingCache();
//bitmap 你的逻辑
//......
}
}