Bitmap的处理优化

android对每个应用的内存是有限制的,如果应用内部有大量图片,可能会导致OOM,因此我们应该熟练使用bitmap加载图片进行优化

bitmap是android用于处理图片的工具。

1:BitmapFactory四个方法:

decodeFile,decodeResources,decodeStream,decodeByteArray支持从文件系统,资源,输入流以及字节数组加载

2:压缩图片BitmapFactory.Options 

使用inSampleSize采样率,采样率同时作用与宽高inSampleSize=2 大小为原来的1/4;

步骤:1将BitmapFactory.Options的injustdecodebounds参数设置为true并加载图片

           2从BitmapFactory.Options中取出图片等原始宽高

           3计算采样率inSampleSize

           4将BitmapFactory.Options的injustdecodebounds参数设置为false并从新加载图片

decodeStream方法压缩时有些特殊,在对FileInputeStream缩放时因为FileInputeStream是一个有序的文件流,而两次decodeStream调用影响了文件流的位置属性

导致第二次decodeStream时得到的是null.为了解决这个问题,可以通过文件流得到对应的文件描述符,然后通过decodeFileDescriptor方法加载一张缩放后的图片

3:缓存

Lru:最近最少使用算法。

内存缓存LruCache

文件缓存DiskLruCache

4:大量图片滑动优化

1:图片错位问题:当用户向下滑动时,itemA正在网络上加载ImageViewA等下载完毕后如果直接给ImageViewA设置图片,这个时候ImageViewA被itemB复用引起图片错位。

2:设置滑动监听,滑动时不加载图片 静止时再加载图片。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值