android 加载bitmap图片 oom 简书_带你走进Android之基础篇--Bitmap加载

a864a6d8d64ba0586dd450f12921a2fb.png

嗨,你终于来啦~
等你好久啦~
从今天开始每天分享一篇Android需要了解的知识点,喜欢的小伙伴欢迎关注,我会定期分享Android知识点及解析,还会不断更新的BATJ面试专题,欢迎大家前来探讨交流,如有好的文章也欢迎投稿。

昨天贡献一个解压缩zip文件的工具,今天我们来讲讲bitmap加载~

Bitmap加载

通常来说在加载Bitmap的过程中导致OOM的原因是要加载的图片太大,
但因为现在屏幕的尺寸都不大,就算是一个高分辨率的图片,以小图加载也就足够了。
所以思路一般是,先获取当前要显示的ImageView区域大小,按大小缩放原图然后加载。

获取Bitmap大小

获取Bitmap大小的过程不需要加载整张图片,可以用 BitmapFactory.Options 来获取。

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 这个参数来控制;

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图片加载的入门技巧了,也是个必备技巧,
在各种初级面试中都会问到,希望能帮到大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值