博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android_WebView截图
阅读量:4291 次
发布时间:2019-05-27

本文共 3081 字,大约阅读时间需要 10 分钟。

//长截屏	5.0以上就行不通//获取Picture对象Picture picture = wv_capture.capturePicture();//得到图片的宽和高(没有reflect图片内容)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);    //绘制(会调用native方法,完成图形绘制)    picture.draw(canvas);}//5.0建议的方法//只显示了webview	enableSlowWholeDocumentDraw(),在setContentView前去调用//获取webview缩放率float scale = wv_capture.getScale();//得到缩放后webview内容的高度int webViewHeight = (int) (wv_capture.getContentHeight()*scale);Bitmap bitmap = Bitmap.createBitmap(wv_capture.getWidth(),webViewHeight, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);//绘制wv_capture.draw(canvas); //截图下来,然后保存     public void go() {        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);            //绘制(会调用native方法,完成图形绘制)            picture.draw(canvas);            iv.setImageBitmap(bitmap);            Toast.makeText(this, "截屏成功" + width + "   " + height + "  " + canvas.getHeight(), Toast.LENGTH_SHORT).show();            try {                String fileName = Environment.getExternalStorageDirectory().getPath() + "/webview_capture4.jpg";                FileOutputStream fos = new FileOutputStream(fileName);                //压缩bitmap到输出流中                bit = Bitmap.createBitmap(bitmap);                bit.compress(Bitmap.CompressFormat.JPEG, 70, fos);                fos.close();                Toast.makeText(this, "截屏成功", Toast.LENGTH_SHORT).show();            } catch (Exception e) {            } finally {                if (bit != null) {                    bit.recycle();                }            }        }    }//在Activity销毁时进行回收,所以开启缓存的话会有性能开销webView.setDrawingCacheEnabled(true);...Bitmap bitmap = webView.getDrawingCache();//多次调用会崩溃,sopublic void go2() {    Bitmap bitmap;    if (webView.isDrawingCacheEnabled()) {        webView.buildDrawingCache();        bitmap = webView.getDrawingCache();    } else {        webView.setDrawingCacheEnabled(true);        bitmap = webView.getDrawingCache();    }    Bitmap bit = Bitmap.createBitmap(bitmap);    iv.setImageBitmap(bit);    webView.destroyDrawingCache();}//整个窗口的截图View view = context.getWindow().getDecorView();Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);view.draw(canvas);//保存 saveFiletry { String fileName = Environment.getExternalStorageDirectory().getPath()+"/webview_capture4.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(); } }

转载地址:http://jcegi.baihongyu.com/

你可能感兴趣的文章
前端开发:一款近年非常受欢迎、简单的WEB弹出层组件(layer)
查看>>
Java中sleep方法和wait方法的区别?
查看>>
Eclipse 下载 开源项目 maven依赖丢失和 Deployment Assembly 丢失
查看>>
MyBatis中对List<Object> 对象List的批处理插入操作
查看>>
mybatis使用foreach批次插入,解决sequence只查询一次的问题(在此,我只看union all 部分)
查看>>
有关分布式 MySQL 数据库中间件 MySQLDA,一文为你深入介绍~
查看>>
小马分享(如何使用Spring实现读写分离(MySQL实现主从复制))
查看>>
使用maven profile实现多环境配置
查看>>
tomcat-自带的简单session共享,小集群适用
查看>>
web.xml 配置中classpath: 与classpath*:的区别
查看>>
分布式实时日志分析解决方案 ELK 部署架构
查看>>
微服务MySQL分库分表数据到MongoDB同步方案
查看>>
kafka知识点整理总结
查看>>
springboot使用JPA创建权限功能,所需要的表
查看>>
介绍Redis的各种用途以及使用场景
查看>>
Oracle分页查询,面试你值得关注!
查看>>
如何把内网IP映射到公网IP
查看>>
【工具篇】Excel文件导出从未如此简单——EasyPOI的使用
查看>>
如何将 oracle 和 mysql数据库的相互迁移
查看>>
Java并发编程:Synchronized及其实现原理
查看>>