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);
希望同学们尊重劳动成果,给予评价。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,可以使用WebView拍照并显示。首先,我们需要为WebView添加一个JavaScript接口,以允许在网页中调用Android的相机功能。 首先,在Android的Activity类中,我们可以使用以下代码来实现: //启用JavaScript webView.getSettings().setJavaScriptEnabled(true); //添加一个JavaScript接口 webView.addJavascriptInterface(new WebAppInterface(this), "Android"); 然后,我们需要创建一个WebAppInterface类,该类将提供一个方法来调用相机功能并将照片显示WebView中: public class WebAppInterface { Context mContext; /** Instantiate the interface and set the context */ WebAppInterface(Context c) { mContext = c; } /** Invoke the camera */ @JavascriptInterface public void invokeCamera() { //创建一个隐式Intent来启动相机应用 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //使用startActivityForResult方法来启动相机应用,以便在拍照完成后获取结果 ((Activity) mContext).startActivityForResult(intent, CAMERA_REQUEST_CODE); } /** Display the captured photo in WebView */ @JavascriptInterface public void displayPhoto(String photoPath) { //将照片显示WebViewwebView.loadUrl("javascript:displayPhoto('" + photoPath + "')"); } } 在WebAppInterface类中,我们创建了一个 invokeCamera() 方法用于调用相机应用,以及一个 displayPhoto() 方法用于将照片显示WebView中。 然后,在Activity类的 onActivityResult() 方法中,我们可以获取到从相机应用返回的照片,并将其传递给WebAppInterface的 displayPhoto() 方法: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) { //获取照片路径 String photoPath = data.getData().getPath(); //通过WebAppInterface将照片显示WebViewwebView.loadUrl("javascript:window.Android.displayPhoto('" + photoPath + "')"); } } 以上就是通过WebView拍照并显示的基本步骤。通过在网页中调用Android的相机功能,然后在Android应用中获取并显示照片,以实现拍照并显示的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值