作者:初语2265_781 | 来源:互联网 | 2023-01-23 20:45
我有一个自定义WebView
,我想获得其内容的位图(包括屏幕外).我使用了这个代码,我从这里得到了:
public static Bitmap getBitmapFromWebviewV2(WebView webView) {
webView.measure(View.MeasureSpec.makeMeasureSpec(
View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
webView.layout(0, 0, webView.getMeasuredWidth(),
webView.getMeasuredHeight());
webView.setDrawingCacheEnabled(true);
webView.buildDrawingCache();
Bitmap bm = Bitmap.createBitmap(webView.getMeasuredWidth(),
webView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas bigcanvas = new Canvas(bm);
Paint paint = new Paint();
int iHeight = bm.getHeight();
bigcanvas.drawBitmap(bm, 0, iHeight, paint);
webView.draw(bigcanvas);
return bm;
}
当我放大很多时,它工作正常,在这种情况下我得到OutOfMemory Crash.我用相同的图片(略微缩放并缩放到最大值)测试了它,它的行为与我上面提到的相同.
我试图通过添加来解决这个问题
while(webView.canZoomOut()){
webView.zoomOut();
}
在一开始,但它根本没有帮助.