前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android浏览器多窗口webview界面截屏心得「建议收藏」

Android浏览器多窗口webview界面截屏心得「建议收藏」

作者头像
全栈程序员站长
发布2022-08-28 09:19:15
9650
发布2022-08-28 09:19:15
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

做Android浏览器多窗口的时候,需要使用到浏览器的webview快照,当前有三种方法,都尝试过,对第二种方法做了一点改进,整理说一下他们各自的优势:

方法一:使用该方法截取webview可视部分的截图,如使用当前方法,会截取的是最开始加载的界面,当你的界面刷新后,并不会截取新的界面,而是使用老的界面,所以效果不太好;

/** * 截取webView可视区域的截图 * @param webView 前提:WebView要设置 webView.setDrawingCacheEnabled(true); * @return */ private Bitmap captureWebViewVisibleSize(WebView webView){ Bitmap bmp = webView.getDrawingCache(); return bmp; }

方法二:截取整个webview的界面,包含未显示的部分;这部分会截取整个webview的大小,由于我模拟的是ipad的模式,所以webview就会很长,而浏览器又是内存大户,故,当遇到截屏的webivew太长的时候,截取出来的bitmap太大,遇到配置低的设备,总是出现oom,后来,对这个方法进行了改造,只是截取显示的内容,见下面方法三;

/** * 截取webView快照(webView加载的整个内容的大小) * @param webView * @return */ private Bitmap captureWebView(WebView webView){ Picture snapShot = webView.capturePicture(); Bitmap bmp = Bitmap.createBitmap(snapShot.getWidth(),snapShot.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bmp); snapShot.draw(canvas); return bmp; }

方法三:对方法二的改造,通过获取pictrue的宽,算取截屏的高,从而截取只是显示出来的部分,我使用的这个方法:

/** * 截取webView快照(webView加载的整个内容的显示部分大小) * @param webView * @return */ private Bitmap captureWebView(WebView webView){ Picture snapShot = webView.capturePicture();

Bitmap bmp = null; int width = picture.getWidth(); int height = (int) (width * 9 / 16);//默认16:9的设备比例,算出截屏的高

if (width > 0 && height > 0) { bmp = Bitmap.createBitmap(width ,height , Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bmp); snapShot.draw(canvas);

} return bmp; }

方法四:方法四就是Android的截屏操作了,没有使用的原因是,我的浏览器界面在webview上还有控件,使用该方法会把多余的非webview的部分截取出来,故没有使用该方法:

/** * 截屏 * @param context * @return */ private Bitmap captureScreen(Activity context){ View cv = context.getWindow().getDecorView(); Bitmap bmp = Bitmap.createBitmap(cv.getWidth(), cv.getHeight(),Config.ARGB_8888); Canvas canvas = new Canvas(bmp); cv.draw(canvas); return bmp; }

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/146725.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档