我有个问题.目前,WebView 的capturePicture已弃用.
我想问一下是否有办法替换这个功能.我的意思是它可以捕获整个webview(不仅显示视图)
谢谢
使用draw()
WebView的方法
示例:
ImageView imageview; WebView webview; class Background extends AsyncTask<Void, Void, Bitmap> { @Override protected Bitmap doInBackground(Void... params) { try { Thread.sleep(2000); Bitmap bitmap = Bitmap.createBitmap(webview.getWidth(), webview.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); webview.draw(canvas); return bitmap; } catch (InterruptedException e){} catch (Exception e){} return null; } @Override protected void onPostExecute(Bitmap result) { imageview.setImageBitmap(result); } } webview.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { if(progress==100) new Background().execute(); } });
我终于找到了解决方案.
一些代码
public class WebViewActivity extends Activity { private static WebView webView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview); webView = (WebView) findViewById(R.id.webView1); webView.loadUrl("http://developer.android.com/reference/packages.html"); // webView.loadUrl("http://developer.android.com/training/basics/firstapp/creating-project.html"); webView.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { // do your stuff here webView.measure(MeasureSpec.makeMeasureSpec( MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, 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); System.out.println("1111111111111111111111=" + bigcanvas.getWidth()); System.out.println("22222222222222222222222=" + bigcanvas.getHeight()); if (bm != null) { try { String path = Environment.getExternalStorageDirectory() .toString(); OutputStream fOut = null; File file = new File(path, "/aaaa.png"); fOut = new FileOutputStream(file); bm.compress(Bitmap.CompressFormat.PNG, 50, fOut); fOut.flush(); fOut.close(); bm.recycle(); } catch (Exception e) { e.printStackTrace(); } } } }); } }
layout.xml
<?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webView1" android:layout_ android:layout_ />