Android--将背景WebView显示为位图

Android--将背景WebView显示为位图,android,webview,imageview,Android,Webview,Imageview,我想在后台加载webview,并且只显示它加载的页面的位图。我的视图层次结构中有一个可见性设置为“不可见”的webview和一个希望显示webview位图的imageview imageView = (ImageView)findViewById(R.id.imageview); webView = (WebView)findViewById(R.id.webview); webView.setBackgroundColor(Color.parseColor("#006330")); webV

我想在后台加载webview,并且只显示它加载的页面的位图。我的视图层次结构中有一个可见性设置为“不可见”的webview和一个希望显示webview位图的imageview

imageView = (ImageView)findViewById(R.id.imageview);
webView = (WebView)findViewById(R.id.webview);
webView.setBackgroundColor(Color.parseColor("#006330"));

webView.setDrawingCacheEnabled(true);
webView.loadDataWithBaseURL(SiteAPI.URL, html, "text/html", "iso-8859-1", null);

webView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
webView.layout(0, 0, webView.getMeasuredWidth(), webView.getMeasuredHeight());

Bitmap b = webView.getDrawingCache(); 
webView.setDrawingCacheEnabled(false);          

if(b != null) {
     Toast.makeText(getBaseContext(), "Not null", Toast.LENGTH_LONG).show();
     imageView.setImageBitmap(Bitmap.createBitmap(b));
}
else {
     Toast.makeText(getBaseContext(), "Null.", Toast.LENGTH_LONG).show();
}
对getDrawingCache()的调用每次都返回null。我尝试过setContentView(webView),页面显示良好。我已确保isDrawingCacheEnabled()返回true,但位图仍然为null。我哪里出错了?

您有两个选择:

  • 使用方法,但请注意,这将返回整个网页的图片,因此您必须对其进行裁剪,以仅显示所需的部分

  • 使用在所需的画布对象中手动绘制webView