android webView截图的4种方法
作者:PalmerYang 发布时间:2023-02-04 19:54:12
标签:android,webView,截图
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);
来源:https://blog.csdn.net/unreliable_narrator/article/details/75650363


猜你喜欢
- 这篇文章主要介绍了JAVA利用递归删除文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方
- 构建可重复读取inputStream的request我们知道,request的inputStream只能被读取一次,多次读取将报错,那么如何
- 本文实例讲述了在Linux上运行C#的方法。分享给大家供大家参考。具体方法如下:在任何一个平台(操作系统+硬件体系)上,编写和运行程序的三个
- JavaFx中其实也可以直接使用字体图标iconfont的,只需要加载ttf字体文件,之后设置unicode即可,具体可以看我给出的代码既然
- 在网上找到了一个可以防页面滚动滑到顶端或底部的时候, 漏出微信丑丑的灰色底,下面小编把核心代码分享给大家供大家参考!我的核心代码:preve
- 01.点明观点 C#中,非托管资源使用之后必须释放,而using()是使用非托管资源的最佳方式,可以确保资源在代码块结束之后被正确
- 一直做Android前端,今天突然心血来潮想搭建一个后台玩玩。平时都是需要什么样的接口直接出个接口文档扔给后台的兄弟,自己从来不操心他们内部
- 本人刚参加工作,面试的时候遇四道笔试题,其中就有这道多线程有序读取文件的题目,初看时拿不准,感觉会,又感觉不会。于是放弃了这道题,今天闲下来
- 本文实例讲述了C#操作CSV文件类。分享给大家供大家参考。具体分析如下:这个C#类用于转换DataTable为CSV文件、CSV文件转换成D
- 本文实例讲述了Android编程简易实现XML解析的方法。分享给大家供大家参考,具体如下:首先创建在Android工程中创建一个Assets
- 在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterMessage方法、Application类的A
- 本文实例讲述了java实现基于SMTP发送邮件的方法。分享给大家供大家参考。具体实现方法如下:import java.util.Date;i
- 在AS中进行NDK开发之前,我们先来简单的介绍几个大家都容易搞懵的概念: &
- 全局配置无效依赖 <dependency> &n
- 图像的旋转需要调用 Graphics2D 类的rota
- 需求基于MTK8163 8.1平台定制导航栏部分,在左边增加音量减,右边增加音量加思路需求开始做之前,一定要研读SystemUI Navig
- 本文实例讲述了Android生成带圆角的Bitmap图片。分享给大家供大家参考。具体如下:有时候我们在开发Android应用时,会遇到圆角图
- 现在项目中有使用到音视频相关技术,在参考了网上各种大牛的资料及根据自己项目实际情况(兼容安卓6.0以上版本动态权限管理等),把声音录制及播放
- Java ThreadPoolExecutor的参数深入理解一、使用Executors创建线程池 &nb