我有一个自定义WebView
,我希望获得其内容的位图(包括屏幕外)。我使用了这段代码,我是从here获得的:
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();
}
一开始,但它根本没有帮助。
答案 0 :(得分:-1)
快速修复: -
在AndroidManifest.xml文件中设置 android:largeHeap =“true”。
<application
android:name="yourapplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher_rounded"
android:label="@string/app_name"
android:largeHeap="true"
android:roundIcon="@mipmap/ic_launcher_rounded"
android:supportsRtl="true"
android:theme="@style/AppTheme">
Gud运气:)