一、问题概述

在使用Glide加载图片时,出现了条纹断裂和色块混乱的情况。
这是原图:

这是通过Glide加载出来的图片:

对比可以看出有明显的条纹和颜色的混乱,但是尝试另一个框架Picasso进行加载图片时,图片显示为正常:


二、通过对比来解决问题

Glide 和 Picasso 都是目前 Android 上最流行的图片加载库。大部分安卓应用开发人员都有使用过这两个库在他们的开发工作中。它们之间的差别主要体现在图片的缓存机制和默认色彩模式的差别。

色彩模式的差别

Glide 默认是用的 RGB_555 的设定,Picasso 则是用的 ARGB _8888的设定。这是Glide节省内存的一种策略,这个设定看起来会影响到图片显示,让我们来修改一下Glide的色彩模式。

 <meta-data android:name="com.xxxx.xxxx.GlideConfiguration"android:value="GlideModule"/>
public class GlideConfiguration implements GlideModule {@Overridepublic void applyOptions(Context context, GlideBuilder builder) {// Apply options to the builder here.builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);}@Overridepublic void registerComponents(Context context, Glide glide) {// register ModelLoaders here.}
}

非常简单,新建一个GlideConfiguration类去实现GlideModule,在重写的applyOptions方法中加上一行代码,再在配置文件中加上这段代码来指定你新建的类所在的包路径。

缓存机制的差别 ##

Picasso:缓存图片时,是下载图片并且缓存一个完整大小的文件到本地,也就是源文件缓存下来。这是一种比较常见的缓存方式。

Glide:缓存图片时,是先下载图片,然后根据你imageView的大小来改变图片的大小,接下来才缓存这个修改后的缓存文件到本地。所以Glide缓存下来的文件并不是源文件。

Glide提供了四种缓存策略:
- DiskCacheStrategy.NONE :不缓存图片
- DiskCacheStrategy.SOURCE :缓存图片源文件
- DiskCacheStrategy.RESULT:缓存修改过的图片
- DiskCacheStrategy.ALL:缓存所有的图片,默认

在上文中使用的是ALL的缓存方式,将缓存方式改为SOURCE,这样Glide就不会对图片进行修改。

运行查看结果显示为正常:

三、总结

以上两个方面缺一个都会引起图片的颜色混乱。这也是Glide框架为了节省内存引起的图片牺牲。通过这个案例也收获了很多,解决问题的同时也学习了两个流行图片加载框架区别。

使用Glide加载图片时出现条纹和颜色混乱相关推荐

  1. Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果

     Android Glide加载图片时转换为圆形.圆角.毛玻璃等图片效果 附录1简单介绍了Android开源的图片加载框架.在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬 ...

  2. glide首次加载图片时,出现图片变形,重复一下就正常

    glide首次加载图片时,出现图片变形问题,重复一下就正常了,这样看着总是很不爽! 简单粗暴的解决办法:将加载的动画去掉,出来的就加载正常了! dontAnimate() 例如:Glide.with( ...

  3. RecyclerView 滑动时不让 Glide 加载图片

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollS ...

  4. Glide加载图片模糊问题

    关于Glide加载图片模糊 需求:1.整张界面展示大图,可缩放.2.在无网络情况下,展示缓存图片:3.大图要清晰. 1.缩放控件可以直接从网络上找,遍地的自定义view.由于项目里面用的有环信,所以直 ...

  5. Android Glide加载图片、网络监听、设置资源监听

    Glide加载图片.加载进度监听 前言 正文 一.项目配置 二.显示网络图片 三.添加设置资源监听 四.添加设置资源监听 五.添加加载进度条 六.封装工具类 七.源码 总结 前言   在日常开发中使用 ...

  6. Glide加载图片尺寸不对的问题

    问题: 因为icon_missing_image这张占位图尺寸导致问题: 如果Imageview中默认的占位图片大小没有填满Imageview,比如Imageview100*80,但是给Imagevi ...

  7. Android框架之路——Glide加载图片(结合RecyclerView、CardView)

    Android框架之路--Glide加载图片 一.简介: 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开 ...

  8. Android --- Glide加载图片时候调用asBitmap()方法的时候总是报错,点不出来?

    今天写Glide加载图片的时候,网上给的例子全都是这样写的 很明显.asBitmap()在load后面,放到我的代码里就会报错,如下: 最后查了半天度娘才发现要在with()之后添加asBitmap( ...

  9. Android Glide加载图片成圆形

    今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1.导入依赖 implementa ...

最新文章

  1. 目前最好用的大规模强化学习算法训练库是什么?
  2. JVM-09自动内存管理机制【内存分配和回收策略】
  3. Cordova Embedded Server
  4. ArrayList与String[]
  5. wordcount.java_mapreduce中wordcount的java实现
  6. java中图的封装,模拟java 中地图的功能封装一个有序的地图
  7. HTTP状态保持(cookie、session)
  8. C++中BEGIN_MSG_MAP或者BEGIN_MESSAGE_MAP的个人理解
  9. App个人信息保护合规十大常见问题及处置策略
  10. 物联网时代 公共建筑应该改变些什么
  11. Vue3 + Typescript + Node.js 搭建elementUI使用环境
  12. (转帖)如何在DE2上安裝μClinux作業系統? (Nios II )
  13. 20190930每日一句
  14. java集合uml_Java开源UML建模集合
  15. 瑞星服务器版序列号 2009,瑞星序列号2009 瑞星杀毒软件序列号和ID
  16. 华为云HCIE认证有多难?考试内容是什么?
  17. 数据库中delete和drop的区别
  18. 常见的文件名后缀及用法
  19. 聚簇索引,非聚簇索引
  20. HTB-Antique

热门文章

  1. SVN 中trunk、branches、tags都什么意思
  2. 用表情开发“俏皮”编程语言
  3. 什么是 pinia 啊?
  4. 让 Org-mode 为你规划任务安排
  5. Mapbox的是最新中文API(一),www_ww_ww原创Mapbox Android SDK
  6. 前端深拷贝和全排列算法
  7. 隐形数字水印_轻量级安卓水印框架,支持隐形数字水印 AndroidWM
  8. 软件测试基础知识,看完就可以和面试官硬碰硬
  9. github下载的几种加速方法
  10. 最小生成树的两个模板