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

大尺寸图片的性能和内存优化相关推荐

  1. QML的图片加载,内存优化研究(一)

    QML的图片加载,内存优化研究(一) QML加载图片的两个控件 Image控件及其相关属性 Image加载图片的内存问题 代码一: 代码二: 代码三: 代码四: 代码五: 通过源码来分析 QML加载图 ...

  2. 关于android性能,内存优化 http://www.cnblogs.com/zyw-205520/archive/2013/02/17/2914190.html

     随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要  求远远高于PC的桌面应用程序.以上理由,足以需要 ...

  3. Android之——性能与内存优化

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46987951 写出高效代码的两条基本的原则:(1)不要做不必要的事:(2)不要分配 ...

  4. Layabox率先支持小米快游戏,LayaAir 2.0.2版本大幅提升3D性能、spine性能和内存优化、新增屏幕适配设置!...

    自上次LayaAir 2.0.1beta新增3D动画文件压缩.内存与性能优化.开放域项目创建等功能后,一个月很快就过去,在这段时间里,我们不仅在官网新增了大量的LayaAir 2.0 3D文档,优化了 ...

  5. SRS性能、内存优化工具用法

    SRS提供了一系列工具来定位性能瓶颈和内存泄漏,这些在./configure && make后的summary中是有给出来用法的,不过不是很方便,所以特地把用法写到这个文章中. 文中所 ...

  6. Android 超清大尺寸图片压缩转Base64中卡顿/速度优化问题整理(在子线程压缩Bitmap卡的主线程进度条走不动了。。。)

    最近遇到需求是前后端传输图片使用的是Base64,但是前端(Android 端)图片很大(尺寸很大4480 × 2520,质量也很大7-10M),需要压缩到一定尺寸(1280 × 960,当然还可以压 ...

  7. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )

    文章目录 一. 哈夫曼编码开关 二. 哈夫曼编码原理 三. libjpeg-turbo 函数库 四. libjpeg-turbo 函数库下载 [Android 内存优化]图片文件压缩 ( Androi ...

  8. 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    文章目录 一. 代码生成控件 1. 创建设置项目 ( 1 ) 创建项目 ( ① 选择 Create a new Xcode project | ② 创建 Single View Application ...

  9. ANDROID内存优化(大汇总——中)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

最新文章

  1. 皮一皮:这剧透的太厉害了...
  2. 学习 jQuery下拉框,单选框,多选框整理
  3. jdom学习:读取xml文件
  4. Git 常用命令和教程
  5. android怎么升级版本5.0,一加手机怎么升级安卓5.0系统
  6. 在ASP.NET中使用Session常见问题集锦
  7. 国家存储器基地项目二期于武汉开工 月规划产能20万片
  8. 网站服务器是租还是买,建站服务器是买还是租?编辑教你聪明选
  9. UVa 11991 一道简单题
  10. 三 数据结构 --数和二叉树
  11. npm下载webpack时常见错误解决办法
  12. 图书管理系统的E-R图和数据库模型图
  13. python打印标签脚本
  14. 系统学习机器学习之SVM(四)--SVM算法总结
  15. 软工系列之--数据流图(DFD图)
  16. 云计算机是什么原理,云电脑的运行原理是什么?
  17. 復現suma++:最後一步 ./visualizer 報錯
  18. android 4g wifi热点,WIFI热点部署+
  19. 智能电话机器人-重新定义智能语音
  20. 「后以太坊1.0」众生相:DeFi拥堵,突围Layer2

热门文章

  1. apache ii评分怎么评_APACHEII评分说明
  2. 共享充电宝之争:胜于专利,败于骂街 | 一点财经
  3. 数据结构中的“阴”和“阳”
  4. 各主流编程语言适用领域——软件工程
  5. 计算机组成原理之概述篇(一)
  6. 在线生成安卓签名证书
  7. 一张A4纸打印多张财务凭证(分栏报表)
  8. 指纹识别在智能手机上的应用前景分析
  9. 用python画小仓鼠教程_小仓鼠简笔画教程
  10. 抖音封禁3973个炫富账号,一股清流!