今天来和大家探讨一个问题,那就是WebView,webView内部可以有截图这个功能的,而且截取的是整个网页的大小,并且用ImageView进行显示,其实最主要的是抓住问题的关键,那么就是等网页显示完成了在进行截图的操作。
但是如何知道网页已经加载完成了呢,我们可以用webView提供的方法onProgressChanged来判断进度,但是偶尔的时候还是有bug,爆的错误说截取的宽和高必须得大于0,但是如果我们判断它大于0了,那么他就会出现白屏了,什么都不出现了。问题纠结了,想来想去,我们可以这样如果他小于的时候在进行加载网页,这样的做法貌似有那么一点不好!不过我试了一下没什么问题。好了废话不说了,添上代码再说:
下面是关键的代码:
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int newProgress)
{
if (newProgress == 100) {
// bmp = captureWebView(view);
// image.setBackgroundDrawable(new BitmapDrawable(bmp));
// webView.setVisibility(View.GONE);
Picture picture = webView.capturePicture();
int width = picture.getWidth();
int height = picture.getHeight();
if (width > 0 && height > 0) {
Bitmap bmp = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
picture.draw(canvas);
image.setBackgroundDrawable(new BitmapDrawable(bmp));
webView.setVisibility(View.GONE);
}else{
webView.loadUrl(“http://www.baidu.com”);
webView.setDrawingCacheEnabled(true);
}
}
}
});
webView.loadUrl(“http://www.baidu.com”);
webView.setDrawingCacheEnabled(true);
希望同学们尊重劳动成果,给予评价。