普通的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截长图相关推荐

  1. android WebView截长图实现

    1.先简单介绍下webview截屏,看代码: //开启缓存 webview.setDrawingCacheEnabled(true); webview.buildDrawingCache();Bitm ...

  2. python3:android手机截长图的小工具

    这个工具写下来遇到了不少坑,直到现在还没有完全解决,先记录下来吧,后面有机会再修改,或是有心的同学帮忙分析一下为什么? 主要实现以下功能: 1. 在手机上截一张图至桌面. 2. 在手机在连接截多张图片 ...

  3. android中最新webview的功能,Android WebView实现截长图功能

    本文实例为大家分享了Android实现截长图功能的具体代码,供大家参考,具体内容如下 先看看手机自带的长截屏功能:  机型: vivo x9 plus 大胆推测实现逻辑: 1:需要一个可以滚动的Vie ...

  4. android webview 图片居中,Android WebView实现截长图功能

    本文实例为大家分享了Android实现截长图功能的具体代码,供大家参考,具体内容如下 先看看手机自带的长截屏功能:  机型: vivo x9 plus 大胆推测实现逻辑: 1:需要一个可以滚动的Vie ...

  5. android 截长图 方法,Android实现截屏与截长图功能

    本文实例为大家分享了Android实现截屏与截长图功能展示的具体代码,供大家参考,具体内容如下 Demo在GitHub的地址:ScreenShoot 在Android开发中,有时候会遇到需要截屏分享到 ...

  6. Android实现截屏和截长图功能的几种方法

    一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区域(包含状态栏)全部截取下来. 如果开发中想要调 ...

  7. Android 实现截屏和截长图功能的几种方法

    欢迎大家关注我的公众号:**牛角尖尖上起舞** 一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区 ...

  8. Android滚动截屏,ScrollView截屏,Listview截屏,Recyclerview截屏, 截长图

    最近在做一个关于截频的功能, 恰逢鸿洋大神分享了一篇相关的博客, 我使用之后觉得甚是好用, 所以也整理了一下,以供学习. 在做分享功能的时候,需要截取全屏内容还有截长图,一屏展示不完的内容,一般我们会 ...

  9. android 拖动截图,【UNIAPP截长图】方案之一:滚动截屏 Android

    实现思想:主动滚动一段距离,截一个图,然后裁剪拼接 关键步骤: 1.截长图准备 2.截取图片组 3.拼接长图片 1.截长图准备 preparePicture() 获取屏幕可用宽高,页面宽高,及页面底部 ...

  10. 截屏与截长图功能的实现

    Demo在GitHub的地址: https://github.com/Hebin320/ScreenShoot Demo在CSDN上的下载地址: http://download.csdn.net/de ...

最新文章

  1. 这个AI能帮你女朋友自拍:从照片生成3D视频,总有个角度让她满意
  2. 旋转目标检测rotation-yolov5笔记
  3. 括号字符串的有效性和最长有效长度
  4. pycharm 无法更新代码 update project 无效
  5. Spring Cloud Zuul网关(快速搭建)
  6. 3、AngularJS2 架构
  7. 我在Freebsd下安装帝国CMS系统整合Discuz的服务器环境配置
  8. 生成对抗网络GAN损失函数loss的简单理解
  9. Java 获取项目文件路径
  10. PHP Curl 多线程实现
  11. 如何用iMazing备份和恢复辐射避难所(附工具下载)
  12. 《数字图像处理 第三版》(冈萨雷斯)——第十一章 表示和描述
  13. 编程开发软件工具下载
  14. Python爬虫分析,全国结婚率连续5年下降,这届年轻人,为什么不敢结婚?
  15. Jointly Embedding Knowledge Graphs and Logical Rules
  16. JAVA删除pdf空白页_如何从iText中的PDF中删除空白页面
  17. SpringBoot @Vaild注解拦截不生效
  18. (2017中国数字化贡献人物专访)线上蓝光、数字蓝光:助力蓝光弯道超车
  19. python for x in range(0,10) 例如使用python打印9*9乘法表
  20. katka-container搭建

热门文章

  1. sqldependency 的使用
  2. 巨头不想再将“命脉”交给微信、支付宝
  3. 七号信令的消息结构(包括SCCP详解)
  4. 50行python代码写个计算器教程
  5. Swift开发之简单计算器项目
  6. python实现同态滤波
  7. Lottie - 实现 AE 动效(Bodymovin)
  8. MMKV_MMKV——1.使用
  9. 银河麒麟支持php吗,银河麒麟Linux
  10. 数据库基础笔试题(附带答案)