android x5webview截长图
普通的webview:
public static Bitmap shotWebView( WebView webView, ImageView imageView) {try {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {// Android5.0以上float scale = webView.getScale();int width = webView.getWidth();int height = (int) (webView.getContentHeight() * scale + 0.5);final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);webView.draw(canvas);// 保存图片Log.d("bitmap888--","45"+bitmap.getByteCount());savePicture(webView.getContext(), bitmap);return bitmap;} else {// Android5.0以下Picture picture = webView.capturePicture();int width = picture.getWidth();int height = picture.getHeight();if (width > 0 && height > 0) {Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);picture.draw(canvas);// 保存图片savePicture(webView.getContext(), bitmap);return bitmap;}return null;}} catch (OutOfMemoryError oom) {return null;} }
注:捕捉oom实际没有意义,可以通过降低图片质量(RGB_565),也可以截取截图高度,防止图片过高(下面x5webview中截取一半)等方法来防止oom
x5webview:
private Bitmap captureWebView(X5WebView webView) {int wholeWidth = webView.computeHorizontalScrollRange();int wholeHeight = webView.computeVerticalScrollRange();wholeHeight=wholeHeight/2;//高度截取一半,防止oom,后面可以指定高度,缩放进行换算Bitmap x5bitmap = Bitmap.createBitmap(wholeWidth , wholeHeight, Bitmap.Config.RGB_565);Canvas x5canvas = new Canvas(x5bitmap);x5canvas.scale(((float) wholeWidth / (float) webView.getContentWidth()), ((float) wholeHeight / (float)(webView.getContentHeight()/2)));if ( webView.getX5WebViewExtension() == null) {return null;}webView.getX5WebViewExtension().snapshotWholePage(x5canvas, false, false, new Runnable() {@Overridepublic void run() {//拿到x5bitmap之后的业务逻辑,(如果不在线程里操作,return 拿到的x5bitmap,不稳定,实际加载bitmap的时候时有时无,但是在线程里操作就没这个问题)}});return x5bitmap; }
注:重点是这个线程,因为网上大部分的方法在使用snapshotWholePage的时候都是用的上面三个参数的方法(网上和tx都没有snapshotWholePage相关的api)。
android x5webview截长图相关推荐
- android WebView截长图实现
1.先简单介绍下webview截屏,看代码: //开启缓存 webview.setDrawingCacheEnabled(true); webview.buildDrawingCache();Bitm ...
- python3:android手机截长图的小工具
这个工具写下来遇到了不少坑,直到现在还没有完全解决,先记录下来吧,后面有机会再修改,或是有心的同学帮忙分析一下为什么? 主要实现以下功能: 1. 在手机上截一张图至桌面. 2. 在手机在连接截多张图片 ...
- android中最新webview的功能,Android WebView实现截长图功能
本文实例为大家分享了Android实现截长图功能的具体代码,供大家参考,具体内容如下 先看看手机自带的长截屏功能: 机型: vivo x9 plus 大胆推测实现逻辑: 1:需要一个可以滚动的Vie ...
- android webview 图片居中,Android WebView实现截长图功能
本文实例为大家分享了Android实现截长图功能的具体代码,供大家参考,具体内容如下 先看看手机自带的长截屏功能: 机型: vivo x9 plus 大胆推测实现逻辑: 1:需要一个可以滚动的Vie ...
- android 截长图 方法,Android实现截屏与截长图功能
本文实例为大家分享了Android实现截屏与截长图功能展示的具体代码,供大家参考,具体内容如下 Demo在GitHub的地址:ScreenShoot 在Android开发中,有时候会遇到需要截屏分享到 ...
- Android实现截屏和截长图功能的几种方法
一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区域(包含状态栏)全部截取下来. 如果开发中想要调 ...
- Android 实现截屏和截长图功能的几种方法
欢迎大家关注我的公众号:**牛角尖尖上起舞** 一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区 ...
- Android滚动截屏,ScrollView截屏,Listview截屏,Recyclerview截屏, 截长图
最近在做一个关于截频的功能, 恰逢鸿洋大神分享了一篇相关的博客, 我使用之后觉得甚是好用, 所以也整理了一下,以供学习. 在做分享功能的时候,需要截取全屏内容还有截长图,一屏展示不完的内容,一般我们会 ...
- android 拖动截图,【UNIAPP截长图】方案之一:滚动截屏 Android
实现思想:主动滚动一段距离,截一个图,然后裁剪拼接 关键步骤: 1.截长图准备 2.截取图片组 3.拼接长图片 1.截长图准备 preparePicture() 获取屏幕可用宽高,页面宽高,及页面底部 ...
- 截屏与截长图功能的实现
Demo在GitHub的地址: https://github.com/Hebin320/ScreenShoot Demo在CSDN上的下载地址: http://download.csdn.net/de ...
最新文章
- 这个AI能帮你女朋友自拍:从照片生成3D视频,总有个角度让她满意
- 旋转目标检测rotation-yolov5笔记
- 括号字符串的有效性和最长有效长度
- pycharm 无法更新代码 update project 无效
- Spring Cloud Zuul网关(快速搭建)
- 3、AngularJS2 架构
- 我在Freebsd下安装帝国CMS系统整合Discuz的服务器环境配置
- 生成对抗网络GAN损失函数loss的简单理解
- Java 获取项目文件路径
- PHP Curl 多线程实现
- 如何用iMazing备份和恢复辐射避难所(附工具下载)
- 《数字图像处理 第三版》(冈萨雷斯)——第十一章 表示和描述
- 编程开发软件工具下载
- Python爬虫分析,全国结婚率连续5年下降,这届年轻人,为什么不敢结婚?
- Jointly Embedding Knowledge Graphs and Logical Rules
- JAVA删除pdf空白页_如何从iText中的PDF中删除空白页面
- SpringBoot @Vaild注解拦截不生效
- (2017中国数字化贡献人物专访)线上蓝光、数字蓝光:助力蓝光弯道超车
- python for x in range(0,10) 例如使用python打印9*9乘法表
- katka-container搭建