Glide加载图片OutOfMemory

Glide是常用的图片加载框架,不仅支持加载网络图片还支持加载本地图片,功能强大,接口友好。但是使用不好也会出问题
这次的问题是加载图片的分辨率问题,如果设置不当,Glide会加载全分辨率的图片,而现在相机拍照都是好几M的,图片一多就很容易OOM。
具体情形
ListView通过拍照获取并加载多张图片
  • 显示图片的ImageView
<ImageView
     android:id="@+id/iv_image"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:scaleType="fitXY"/>//这里是关键
  • Glide加载图片的地方
Glide.with(context).load(imageBean.getUrl()).into(imageView);
  • 内存的变化

以上就是OOM情形再现,通过内存的变化我们可以看出,每次通过拍照增加一张图片,内存就相应增加图片的大小,没有优化。比如图片是7M,内存就会增加7M,这样显然是不行的

问题原因

当ImageView的scaleType设置为fitXY时,Glide会加载全分辨率的图片,尽管ImageView就那么大。

问题解决

有2种选择

  • 更改ImageView的scaleType,比如改成fitCenter或者centerCrop
  • 或者加载的时候改为
Glide.with(context).load(carImageBean.getUrl()).fitCenter().into(imageView);

没错,加个fitCenter()就行了

以上基于glide:3.7.0



欢迎关注我的公众号,和我一起每天进步一点点!
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值