Android webView显示完成后截图

http://blog.sina.com.cn/s/blog_acf41ccb01018bvc.html


今天来和大家探讨一个问题,那就是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);
希望同学们尊重劳动成果,给予评价。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值