android webview capturepicture,android webView截图的4种方法
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种方法相关推荐
- 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )
文章目录 一.报错信息 二.解决方案 ( Android Studio 配置外部 so 动态库两种方法 ) 1.jniLibs 目录存放 2.libs 目录存放 一.报错信息 外部引用 so 动态库 ...
- ios 获取html的高度,iOS Webview自适应实际内容高度的4种方法详解
//第一种方法 - (void)webViewDidFinishLoad:(UIWebView *)webView { CGFloat webViewHeight=[webView.scrollVie ...
- android动态加home,Android 解决监听home键的几种方法
Android 解决监听home键的几种方法 前言: 以下两种方法可以完美解决监听back键,home键,多任务键(最近任务键). 一.使用注册广播监听home键.多任务键 演示图 创建一个广播代码如 ...
- android启动其他app的服务器,Android中通过外部程序启动App的三种方法
这篇文章主要介绍了Android中通过外部程序启动App的三种方法, 本文讲解了直接通过包名. 通过自定义的Action. 通过Scheme三种方法,并分别给出操作代码,需要的朋友可以参考下 ==== ...
- android设置自动开关机,Android开发之设置开机自动启动的几种方法
Android开发之设置开机自动启动的几种方法 方法一: android:name=".AutoStartReceiver"为处理开机启动后所做操作的AutoStartReceiv ...
- 什么是android应用程序未安装,Android 解决应用程序未安装的三种方法
<Android 解决应用程序未安装的三种方法>由会员分享,可在线阅读,更多相关<Android 解决应用程序未安装的三种方法(3页珍藏版)>请在人人文库网上搜索. 1.解决安 ...
- Android中监听Home键的4种方法总结
本文主要介绍了Android中监听Home键的4种方法总结,主要讲解了onSaveInstanceState方法.onUserLeaveHint方法.ACTION_CLOSE_SYSTEM_DIALO ...
- android 自定义录像机,android 手机录屏,最简单的 3 种方法
原标题:android 手机录屏,最简单的 3 种方法 公众号文章不支持插入外链,下面提到的所有工具,都可点击 阅读原文前往我的个人网站 kejiweixun.com 下载. 安卓手机录制屏幕有很多方 ...
- macOS下长截图的两种方法
macOS虽然系统自带截图工具,但是不具体长截图功能,下面介绍macOS下长截图的两种方法 对于Chrome浏览器 使用浏览器自带的开发者工具截图,可以对完整的整个网页进行截图 不需要安装第三方工具 ...
- mac电脑快速截图快捷键是什么?苹果mac电脑怎么截图?mac电脑截图的13种方法
mac上各种截图软件层出不穷,你又不知道哪款好用,所以小编今天为大家带来mac电脑截图的13种方法,不管你是用iMac.iMac Pro.MacBook.MacBook Air还是MacBook Pr ...
最新文章
- 【Docker实战之入门】Dockerfile详细分析:构建docker镜像(4)构建动态网站WordPress...
- python怎么用数据修改,如何更改数据框Python中的值
- Flex与.NET互操作(八):使用FluorineFx网关实现远程访问
- 【算法设计与数据结构】为何程序员喜欢将INF设置为0x3f3f3f3f?(转)
- gbq6的文件能转换成gbq5_PPT文件转换成PDF怎么转?这些方法能实现快速转换
- 数据湖技术 Iceberg 的探索与实践
- (转)无特征过狗一句话猥琐思路
- 蓝桥杯基础模块06_1:定时器计数器
- ThinkPHP讲解(一)框架基础
- 162. Find Peak Element
- java对焦_【Camera】手机相机自动对焦的3种方式及原理
- 安卓学习笔记36:内容提供者
- java时间戳格式_Java时间戳转化为今天、昨天、明天(字符串格式)
- hdu---2087---剪花布条
- 网店系统SHOP++、V5shop、shopex全程分析比较
- python qt designer
- zynq pl 发数据给 ps
- D盘需要管理员权限解决办法
- 有些人无缘再见,却一生想念
- 【解决电脑】开机屏幕左键无反应,右键变加载;选择文件夹未响应,卡顿40秒后恢复;新建文件夹正常,删除移动卡顿
热门文章
- mcu比较器技巧和诀窍_如何准备技术面试-技巧和窍门,以帮助您表现最好
- 自学成才翁_以自学成才的设计师的身份在产品表旁导航。
- react jest测试_如何设置Jest和Enzyme来测试React Native应用
- shell脚本spawn_如何使用child_process.spawn将Python / Ruby / PHP Shell脚本与Node.js集成
- 盲人编程_帮助盲人学习编码
- mysql自动获取时间列_mysql自动获取时间日期的方法
- ubuntu安装spark-2.4.7-bin-without-hadoop
- go rpc安装方法
- 利用Python只需3行代码即可生成验证码
- 案例一:网站模拟登录