嗨,你终于来啦~
等你很久啦~
从今天开始天天分享一篇Android须要了解的知识点,喜欢的小伙伴欢迎关注,我会按期分享Android知识点及解析,还会不断更新的BATJ面试专题,欢迎你们前来探讨交流,若有好的文章也欢迎投稿。面试
昨天贡献一个解压缩zip文件的工具,今天咱们来说讲bitmap加载~工具
一般来讲在加载Bitmap的过程当中致使OOM的缘由是要加载的图片太大,
但由于如今屏幕的尺寸都不大,就算是一个高分辨率的图片,以小图加载也就足够了。
因此思路通常是,先获取当前要显示的ImageView区域大小,按大小缩放原图而后加载。spa
获取Bitmap大小的过程不须要加载整张图片,能够用 BitmapFactory.Options 来获取。code
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decode***
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
复制代码
其中 decode方法有不少种,能够根据须要选择不一样的实现,好比 stream, file等,
重点是inJustDecodeBounds设置为 true 以后在解析的时候就不会加载到内存了,只获取对应的宽和高。图片
比方说要把一张 960960的图放到9696的ImageView里,很简单咱们应该缩放10倍,
缩放的过程能够用 inSampleSize 这个参数来控制;ip
public Bitmap getResizedBitmap(File bitmap, int sampleSize) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = sampleSize;
return BitmapFactory.decodeFile(bitmap, options);
}
复制代码
在真正加载图片的时候 inJustDecodeBounds这个参数须要设置为true,
此时将会真正的消耗内存。内存
上面这就是Android图片加载的入门技巧了,也是个必备技巧,
在各类初级面试中都会问到,但愿能帮到你们。get