Android WebView截取所有内容生成长图在5.0以上系统异常问题
来源:互联网 发布:aide表白源码 编辑:程序博客网 时间:2024/06/05 13:00
最近在做webview截取所有内容生成长图时出现一些问题,在Android5.0以下系统能正常生成长图,但是在5.0以上会出现只能截取第一屏的内容,剩下的全部为空白,查看资料发现原来是系统在5.0+版本上,Android对webview做了优化,为了减少内存占用以提高性能,因此在默认情况下会智能的绘制html中需要绘制的部分,其实就是当前屏幕展示的html内容,因此会出现未显示的图像是空白的。解决方法如下:
如上图:在activity的onCreate方法中的setContentView前加上一句enableSlowWholeDocumentDraw();意思为取消系统的智能绘制,当然这样之后性能会有所下降,但为了实现功能,也只能如此。
加上之后在Android5.0以下系统会崩溃,那是因为在5.0以下没有enableSlowWholeDocumentDraw()这个方法,因此需要做个判断,获取本机系统版本号,当版本号大于5.0则调用enableSlowWholeDocumentDraw()方法,否则不调用。
代码为:API=21即为Android5.0系统
if (android.os.Build.VERSION.SDK_INT >= 21) { enableSlowWholeDocumentDraw();}
下面为生成长图代码:public Bitmap viewShot(final View view) { if (view == null) return null; view.setDrawingCacheEnabled(true); view.buildDrawingCache(); int measureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); view.measure(measureSpec, measureSpec); if (view.getMeasuredWidth() <= 0 || view.getMeasuredHeight() <= 0) { return null; } Bitmap bm; try { bm = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); } catch (OutOfMemoryError e) { System.gc(); try { bm = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); } catch (OutOfMemoryError ee) { return null; } } Canvas bigCanvas = new Canvas(bm); Paint paint = new Paint(); int iHeight = bm.getHeight(); bigCanvas.drawBitmap(bm, 0, iHeight, paint); view.draw(bigCanvas); showToast(getString(R.string.already_share_save_img)); return bm;}
完结...
阅读全文
1 0
- Android WebView截取所有内容生成长图在5.0以上系统异常问题
- WebView截取长图
- Android截图包含webview时,webview部分空白(其他部分正常),此问题发生在系统4.4及以上
- Android截图包含webview时,webview部分空白(其他部分正常),此问题发生在系统4.4及以上
- Android 6.0以上系统webview的onReceivedTitle问题
- android 实现截取 内容超过屏幕大小的长图
- 部分android手机WebView无法成功同步Cookie问题的解决方案(5.0系统以上)
- WebView 生成长图,截图
- Android 6.0以上系统webview的bug
- 全屏截取webview内容
- Android WebView 运行在系统进程引发的异常
- Android 5.0系统以上获取所有运行进程
- Android 5.0系统以上获取所有运行进程
- Android 3.0 以上系统 webView 无法在html中传值的解决办法
- Android 仿各主流便签内容生成长图功能
- 关于android gallery 在 3.0以上系统出错的问题
- iOS 关于屏幕截图,获取webView高度,截取长图
- 基于android 实现截取 内容超过屏幕大小的长图
- C# 使用资源文件 Resource.resx 的方法
- LeetCode--Reverse Linked List 反转链表(Python)
- linux shell审计--snoopy的注意事项
- mysql5.7 用户管理和授权
- Autobahn实现WebSocket通信
- Android WebView截取所有内容生成长图在5.0以上系统异常问题
- 百度地图API 显示餐饮店铺
- C++——算24(只用加法,减法和乘法)
- Spring5学习(二)-spring projects之Spring Integration
- 【CSDN下载】下载热门资源一周精选
- 带下划线的TextVeiw
- 第一次写博客
- MYSQL的常用命令和增删改查语句和数据类型
- leetcode_add two number