大尺寸图片的性能和内存优化
Android程序优化,通常是指性能和内存的优化,更快的响应速度,更低的内存占用。
大尺寸的图片在进行显示的时候都会需要性能和内存的优化。
如果直接调用setImageResource(resId)的话,运行的时候会调用BitmapFactory.decodeStream()方法将资源图片生成一个Bitmap, 然后由这个Bitmap生成一个Drawable,最后再将这个Drawable设置到ImageView。
因为生成了Bitmap,如果图片过大,就会导致性能和内存占用问题。
这个时候需要根据目标尺寸重新生成Bitmap然后将生成后的Bitmap设置到ImageView上, 具体的方法:
1, 将BitmapFactory.Options的InJustDecodeBounds设置true
2,调用BitmapFactory.decodeResource(getResources(), resId, options)不会在内存中生成Bitmap,而只是得到原始图片的属性(width,height,type and etc)
3, 根据目标尺寸重新计算options.inSampleSize,这个值的意思图片的宽高按比例缩小。比如一张图片的大小是2000×1000,如果inSampleSize=2,那么缩小后的图片大小是1000×500,即为原来的1/4.
4, 将BitmapFactory.Options的InJustDecodeBounds重新设回false,保证再次调用BitmapFactory.decodeResource(getResources(), resId, options)会生成Bitmap对象。
5,调用ImageVIew对象的setImageBitmap(bitmap)方法,将生成后的Bitmap对象设置到ImageView。
Bitmap占用的内存为:像素总数×每个像素占用的内存。四种像素类型:ARGB_8888,ARGB_4444,ARGB_565,ALPHA_8,每个像素占用的字节数是4,2,2,1.因此一个2000×1000的ARGB_8888类型的Bitmap占用的内存大约为:2000×1000×4=7.63M。
Android根据设备屏幕尺寸和dpi的不同,给系统分配的单应用程序内存大小也不同,具体如下表(表格取自Android 4.4 Compatibility Definition Document (CDD)):
屏幕尺寸 | DPI | 应用内存 |
small / normal / large | ldpi / mdpi | 16MB |
small / normal / large | tvdpi / hdpi | 32MB |
small / normal / large | xhdpi | 64MB |
small / normal / large | 400dpi | 96MB |
small / normal / large | xxhdpi | 128MB |
xlarge | mdpi | 32MB |
xlarge | tvdpi / hdpi | 64MB |
xlarge | xhdpi | 128MB |
xlarge | 400dpi | 192MB |
xlarge | xxhdpi | 256MB |
大尺寸图片的性能和内存优化相关推荐
- QML的图片加载,内存优化研究(一)
QML的图片加载,内存优化研究(一) QML加载图片的两个控件 Image控件及其相关属性 Image加载图片的内存问题 代码一: 代码二: 代码三: 代码四: 代码五: 通过源码来分析 QML加载图 ...
- 关于android性能,内存优化 http://www.cnblogs.com/zyw-205520/archive/2013/02/17/2914190.html
随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要 求远远高于PC的桌面应用程序.以上理由,足以需要 ...
- Android之——性能与内存优化
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46987951 写出高效代码的两条基本的原则:(1)不要做不必要的事:(2)不要分配 ...
- Layabox率先支持小米快游戏,LayaAir 2.0.2版本大幅提升3D性能、spine性能和内存优化、新增屏幕适配设置!...
自上次LayaAir 2.0.1beta新增3D动画文件压缩.内存与性能优化.开放域项目创建等功能后,一个月很快就过去,在这段时间里,我们不仅在官网新增了大量的LayaAir 2.0 3D文档,优化了 ...
- SRS性能、内存优化工具用法
SRS提供了一系列工具来定位性能瓶颈和内存泄漏,这些在./configure && make后的summary中是有给出来用法的,不过不是很方便,所以特地把用法写到这个文章中. 文中所 ...
- Android 超清大尺寸图片压缩转Base64中卡顿/速度优化问题整理(在子线程压缩Bitmap卡的主线程进度条走不动了。。。)
最近遇到需求是前后端传输图片使用的是Base64,但是前端(Android 端)图片很大(尺寸很大4480 × 2520,质量也很大7-10M),需要压缩到一定尺寸(1280 × 960,当然还可以压 ...
- 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )
文章目录 一. 哈夫曼编码开关 二. 哈夫曼编码原理 三. libjpeg-turbo 函数库 四. libjpeg-turbo 函数库下载 [Android 内存优化]图片文件压缩 ( Androi ...
- 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )
文章目录 一. 代码生成控件 1. 创建设置项目 ( 1 ) 创建项目 ( ① 选择 Create a new Xcode project | ② 创建 Single View Application ...
- ANDROID内存优化(大汇总——中)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...
最新文章
- 皮一皮:这剧透的太厉害了...
- 学习 jQuery下拉框,单选框,多选框整理
- jdom学习:读取xml文件
- Git 常用命令和教程
- android怎么升级版本5.0,一加手机怎么升级安卓5.0系统
- 在ASP.NET中使用Session常见问题集锦
- 国家存储器基地项目二期于武汉开工 月规划产能20万片
- 网站服务器是租还是买,建站服务器是买还是租?编辑教你聪明选
- UVa 11991 一道简单题
- 三 数据结构 --数和二叉树
- npm下载webpack时常见错误解决办法
- 图书管理系统的E-R图和数据库模型图
- python打印标签脚本
- 系统学习机器学习之SVM(四)--SVM算法总结
- 软工系列之--数据流图(DFD图)
- 云计算机是什么原理,云电脑的运行原理是什么?
- 復現suma++:最後一步 ./visualizer 報錯
- android 4g wifi热点,WIFI热点部署+
- 智能电话机器人-重新定义智能语音
- 「后以太坊1.0」众生相:DeFi拥堵,突围Layer2