android 在webView里面截图大概有四种方式,具体内容如下

1.获取到DecorView然后将DecorView转换成bitmap然后写入到文件里面.

View view = getWindow().getDecorView();

Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);

view.draw(canvas);

Log.d(TAG,"bitmap--"+bitmap);

try {

String fileName = Environment.getExternalStorageDirectory().getPath()+"/webview_jietu.jpg";

FileOutputStream fos = new FileOutputStream(fileName);

//压缩bitmap到输出流中

bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fos);

fos.close();

Toast.makeText(WebviewFromGetDecorView.this, "截屏成功", Toast.LENGTH_LONG).show();

} catch (Exception e) {

Log.e(TAG, e.getMessage());

}finally {

if(bitmap!=null) {

bitmap.recycle();

}

}

2.使用webViewpicture来实现该功能.(该方法被废弃了因此不建议使用)

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);

try {

String fileName = Environment.getExternalStorageDirectory().getPath()+"/webview_jietu.jpg";

FileOutputStream fos = new FileOutputStream(fileName);

//压缩bitmap到输出流中

bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fos);

fos.close();

Toast.makeText(WebviewFromCapture.this, "截屏成功", Toast.LENGTH_LONG).show();

bitmap.recycle();

} catch (Exception e) {

Log.e(TAG, e.getMessage());

}

}

3.使用webViewDraw来实现.(该方法被废弃了因此不建议使用)

float scale = webView.getScale();

int webViewHeight = (int) (webView.getContentHeight()*scale+0.5);

Bitmap bitmap = Bitmap.createBitmap(webView.getWidth(),webViewHeight, Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);

webView.draw(canvas);

try {

String fileName = Environment.getExternalStorageDirectory().getPath()+"/webview_jietu.jpg";

FileOutputStream fos = new FileOutputStream(fileName);

//压缩bitmap到输出流中

bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fos);

fos.close();

Toast.makeText(WebviewFromDraw.this, "截屏成功", Toast.LENGTH_LONG).show();

bitmap.recycle();

} catch (Exception e) {

Log.e(TAG, e.getMessage());

}

4.使用webViewDrawCache来实现(建议使用).

Bitmap bitmap = webView.getDrawingCache();

try {

String fileName = Environment.getExternalStorageDirectory().getPath() + "/webview_jietu.jpg";

FileOutputStream fos = new FileOutputStream(fileName);

//压缩bitmap到输出流中

bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fos);

bitmap.recycle();

fos.close();

Toast.makeText(WebviewFromDrawCache.this, "截屏成功", Toast.LENGTH_LONG).show();

} catch (Exception e) {

Log.e(TAG, e.getMessage());

} finally {

bitmap.recycle();

}

注意:

在android5.0及以上版本使用webView进行截长图时,默认是截取可是区域内的内容.因此需要在支撑窗体内容之前加上如下方法.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

WebView.enableSlowWholeDocumentDraw();

}

setContentView(R.layout.activity_webview);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android webview capturepicture,android webView截图的4种方法相关推荐

  1. 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )

    文章目录 一.报错信息 二.解决方案 ( Android Studio 配置外部 so 动态库两种方法 ) 1.jniLibs 目录存放 2.libs 目录存放 一.报错信息 外部引用 so 动态库 ...

  2. ios 获取html的高度,iOS Webview自适应实际内容高度的4种方法详解

    //第一种方法 - (void)webViewDidFinishLoad:(UIWebView *)webView { CGFloat webViewHeight=[webView.scrollVie ...

  3. android动态加home,Android 解决监听home键的几种方法

    Android 解决监听home键的几种方法 前言: 以下两种方法可以完美解决监听back键,home键,多任务键(最近任务键). 一.使用注册广播监听home键.多任务键 演示图 创建一个广播代码如 ...

  4. android启动其他app的服务器,Android中通过外部程序启动App的三种方法

    这篇文章主要介绍了Android中通过外部程序启动App的三种方法, 本文讲解了直接通过包名. 通过自定义的Action. 通过Scheme三种方法,并分别给出操作代码,需要的朋友可以参考下 ==== ...

  5. android设置自动开关机,Android开发之设置开机自动启动的几种方法

    Android开发之设置开机自动启动的几种方法 方法一: android:name=".AutoStartReceiver"为处理开机启动后所做操作的AutoStartReceiv ...

  6. 什么是android应用程序未安装,Android 解决应用程序未安装的三种方法

    <Android 解决应用程序未安装的三种方法>由会员分享,可在线阅读,更多相关<Android 解决应用程序未安装的三种方法(3页珍藏版)>请在人人文库网上搜索. 1.解决安 ...

  7. Android中监听Home键的4种方法总结

    本文主要介绍了Android中监听Home键的4种方法总结,主要讲解了onSaveInstanceState方法.onUserLeaveHint方法.ACTION_CLOSE_SYSTEM_DIALO ...

  8. android 自定义录像机,android 手机录屏,最简单的 3 种方法

    原标题:android 手机录屏,最简单的 3 种方法 公众号文章不支持插入外链,下面提到的所有工具,都可点击 阅读原文前往我的个人网站 kejiweixun.com 下载. 安卓手机录制屏幕有很多方 ...

  9. macOS下长截图的两种方法

    macOS虽然系统自带截图工具,但是不具体长截图功能,下面介绍macOS下长截图的两种方法 对于Chrome浏览器 使用浏览器自带的开发者工具截图,可以对完整的整个网页进行截图 不需要安装第三方工具 ...

  10. mac电脑快速截图快捷键是什么?苹果mac电脑怎么截图?mac电脑截图的13种方法

    mac上各种截图软件层出不穷,你又不知道哪款好用,所以小编今天为大家带来mac电脑截图的13种方法,不管你是用iMac.iMac Pro.MacBook.MacBook Air还是MacBook Pr ...

最新文章

  1. 【Docker实战之入门】Dockerfile详细分析:构建docker镜像(4)构建动态网站WordPress...
  2. python怎么用数据修改,如何更改数据框Python中的值
  3. Flex与.NET互操作(八):使用FluorineFx网关实现远程访问
  4. 【算法设计与数据结构】为何程序员喜欢将INF设置为0x3f3f3f3f?(转)
  5. gbq6的文件能转换成gbq5_PPT文件转换成PDF怎么转?这些方法能实现快速转换
  6. 数据湖技术 Iceberg 的探索与实践
  7. (转)无特征过狗一句话猥琐思路
  8. 蓝桥杯基础模块06_1:定时器计数器
  9. ThinkPHP讲解(一)框架基础
  10. 162. Find Peak Element
  11. java对焦_【Camera】手机相机自动对焦的3种方式及原理
  12. 安卓学习笔记36:内容提供者
  13. java时间戳格式_Java时间戳转化为今天、昨天、明天(字符串格式)
  14. hdu---2087---剪花布条
  15. 网店系统SHOP++、V5shop、shopex全程分析比较
  16. python qt designer
  17. zynq pl 发数据给 ps
  18. D盘需要管理员权限解决办法
  19. 有些人无缘再见,却一生想念
  20. 【解决电脑】开机屏幕左键无反应,右键变加载;选择文件夹未响应,卡顿40秒后恢复;新建文件夹正常,删除移动卡顿

热门文章

  1. mcu比较器技巧和诀窍_如何准备技术面试-技巧和窍门,以帮助您表现最好
  2. 自学成才翁_以自学成才的设计师的身份在产品表旁导航。
  3. react jest测试_如何设置Jest和Enzyme来测试React Native应用
  4. shell脚本spawn_如何使用child_process.spawn将Python / Ruby / PHP Shell脚本与Node.js集成
  5. 盲人编程_帮助盲人学习编码
  6. mysql自动获取时间列_mysql自动获取时间日期的方法
  7. ubuntu安装spark-2.4.7-bin-without-hadoop
  8. go rpc安装方法
  9. 利用Python只需3行代码即可生成验证码
  10. 案例一:网站模拟登录