Glide加载图片OutOfMemory

来源:互联网 发布:linux查看磁盘剩余空间 编辑:程序博客网 时间:2024/06/06 03:25

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

原创粉丝点击