一、为什么Bitmap需要高效加载?
现在的高清大图,动辄就要好几M,而Android对单个应用所施加的内存限制,只有
小几十M,如16M,这导致加载Bitmap的时候很容易出现内存溢出。如下异常信
息,便是在开发中经常需要的:
java.lang.OutofMemoryError:bitmap size exceeds VM budget
为了解决这个问题,就出现了Bitmap的高效加载策略。其实核心思想很简单。假设
通过ImageView来显示图片,很多时候ImageView并没有原始图片的尺寸那么大,
这个时候把整个图片加载进来后再设置给ImageView,显然是没有必要的,因为
ImageView根本没办法显示原始图片。这时候就可以按一定的采样率来将图片缩小
后再加载进来,这样图片既能在ImageView显示出来,又能降低内存占用从而在一
定程度上避免OOM,提高了Bitmap加载时的性能
二、Bitmap高效加载的具体方式
1.加载Bitmap的方式
Bitmap在Android中指的是一张图片。通过BitmapFactory类提供的四类方法:
decodeFile,decodeResource,decodeStream和decodeByteArray,分别从文件系统,
资源,输入流和字节数组中加载出一个Bitmap对象,其中
decodeFile,decodeResource又间接调用了decodeStream方法,这

本文探讨了Android中为何需要高效加载Bitmap以及如何实现。由于大图可能导致内存溢出,通过设置采样率和使用BitmapFactory加载Bitmap是关键。采样率用于按比例缩小图片以减少内存占用,其值应为2的指数。通过先加载图片宽高信息,计算缩放比,再重新加载,可以避免图片拉伸模糊。高效加载流程包括设置inJustDecodeBounds为true获取宽高,计算采样率,然后重载图片。
最低0.47元/天 解锁文章
1040

被折叠的 条评论
为什么被折叠?



