商务服务
Android Glide简单使用
2024-11-15 12:08

Glide是谷歌为我们推荐的一个图片加载库。为什么要选择使用Glide呢

Android Glide简单使用

  • 1、代码有人维护,不至于出现问题,项目组都搞不定的时候问题无法解决。(ImageLoader已没人维护了
  • 2、代码简洁,可读性很好。(Fresco是一个非常优秀的库,但是配置稍显麻烦,同时代码风格读起来有些生疏
  • 3、功能强大(400多k的包,包含很多功能,例如:像加载Gif图片就是Picasso做不到的

下面我们就来介绍下Glide的用法

 
 

这个别忘了,不要粗心哦,很容易忘得,最简单的问题,往往需要最简单的搞定啦。

 
 
 
 
 
 
 
 
 
 
 

除了上面两种‘异常情况’,还有一种情形就是打开手机的通讯录的时候,可以看到你给有些喜欢的人设置了照片,然而有些可怜的人并没给有,总不能在那里留下一片空白吧,这个时候相当于传递了Null,传递null时,这个callback方法就会被调用。

 

其实这个是默认的,但是你还是可以写出来,渐显动画

1、 :Glide提供淡如淡出

 

这里还有一个,设置动画时间。如果你不想要动画可以加上

2、:Android系统提供,从左到右滑出加载动画

单位是像素,裁剪你的图片大小。其实Glide已经会自动根据你裁剪照片来放在缓存中了。但是不想适应大小的时候,可以调用这个方法为指定大小。

 

Glide清楚在合适的中加载合适的Image.当需要裁剪大小时,有个方法,这个方法的裁剪会让你的周围不会留白,还有一个方法,表示让你的Image完全显示,尺寸不对时,周围会留白。

方法的目的就是让用户先看到一个低解析度的图,点开后,再加载一个高解析度的图。

 

一种更高级的缩略图加载方式

当缩略图也需要通过网络加载全部解析度的时候。

 
 

除此之外还有实现诸如马赛克、明暗度等更多滤镜处理

  • ToonFilterTransformation
  • SepiaFilterTransformation
  • ContrastFilterTransformation
  • InvertFilterTransformation
  • PixelationFilterTransformation
  • SketchFilterTransformation
  • SwirlFilterTransformation
  • BrightnessFilterTransformation
  • KuwaharaFilterTransformation
  • VignetteFilterTransformation

用过手机的都知道,当划上划下一个的时候,第二次都比第一次快,就是因为为对资源进行了缓存,而且封装的很好,甚至不需要自己去设定缓存大小,Glide会智能地自己给我们根据设备设置缓存大小。

缓存是为了减少或者杜绝多的网络请求。为了避免缓存,Glide用了内存缓存和‘外存缓存机制’,并且 提供了相应的方法,完全封装,不需要处理细节。Glide会自动缓存到内存,除非调用。尽管调用了这个,Glide还是会缓存到外存,还有一种情形,就是有一张图片,但是这张图变化非常快,这个时候可能并不想缓存到外存中,就使用。如果你两种都不需要,可以两个方法组合着一起使用。

自定义外存缓存机制

Glide默认会缓存Image的很多个版本,比如原图,如果你的大小的缓存。有以下几种缓存策略

  • 什么都不缓存
  • 只缓存最高解析图的image
  • 缓存最后一次那个image,比如有可能你对image做了转化
  • image的所有版本都会缓存
 

修改缓存大小、位置、加载图片质量

和指定为一样,只不过我们需要配置一些信息在函数里面

 
 

一般的图片加载框架设置了磁盘缓存和内存缓存就行了,但是Glide还设置了一个图片缓存。 图片缓存 <= 内存缓存

 

这里Glide不仅可以缓存图片,还可以缓存其他文件譬如视频之类,也就是说可以把他作为我们的缓存工具来使用,当然缓存方式还是使用LRU。这样我们就不必再去重新集成和,再去申请空间,配置。直接可以复用Glide的。

使用缓存也加载动画

但是,动画默认是在图片没有缓存的情况下才加载,想想也是合理的,如果图片已近下载到本地加载速度将会非常快,这个时候使用动画过渡反而碍事。要让从缓存中图片呈现也加载动画不能通过这种方式实现,可以用监听器来做。

 

加载图片肯定也是有先后顺序,Glide提供了这个方法,它接收以下几个参数

但是Glide并不一定会按照你的顺序来,只是尽量按照你的顺序来。(比如给一张很大的图片最高的优先权,但是它并不一定比低优先级的图先加载出来,这个时候只有使用缩略图了

 

上面所有的情况都是加载图片到中,但是并不是所有的情况都是这样。譬如加载的控件类型不是,是个自定义的布局。或者加载为的形式。 可以使用类型,这里指定他的大小为500*100,加载为背景图片

 

同理下载图片原理是一样

 

Glide中的回调:Targets

从上面的介绍,已经可以看出Glide内部封装了所有的细节,什么网络请求,什么缓存机制,当所有都就绪过后,自动切换回UI线程,更新。Targets就是Glide中的回调,当异步线程中所有的工作做完过后返回结果。说白了就是,当请求图片完成后,需要回调的方法。

SimpleTarget

 

注意事项

1、上面这段代码不要写成匿名内部类的机制,原因就是java的自动垃圾回收机制可能在图片还没有加载好的时候就已经把你的Target回收了。

2、注意里面的参数,Glide的请求是和传进去的共存亡的,如果传一个进去,当过后,你的请求也就GC了,但是如果这样传:.当你的过后,请求还是会继续,回调还是会继续。

有size的Target

如果传给的是一个,但是图片的size比的Size大,Glide为了节省时间,会加载小的那个size的Image。但是这对Target并不适用,以为这里并不知道size。但是如果知道image应该多大,可以传递给Target.就像下面这样

 

ViewTarget

适用于想Glide加载到自定义中去

 

还有和作为扩展自行研究喽。

 

这里的捕获异常,如果返回表示我们自己处理掉了异常,表示交给Glide去处理,因为我们定义了那么就显示里面的内容。

这里表示是否准备资源显示,返回表示用户自己已经设置好资源,包括截取操作,动画操作之类的,准备好显示。表示交给Glide

如此修改后,就能够看到图片加载日志了,方便我们调试

只需两步 Step1

导入需要替换的,可以选择Volley也可以选择OkHttp,我们使用Okhttp,在Module的文件中配置

 

这个版本具体选择多少,可以在https://github.com/bumptech/glide/wiki/Integration-Libraries这里查询到

Step2

在文件中写入

 

你可能会有和我一样的疑问,Glide可以通过在配置清单里面配置 能不能写几个meta-data标签,一个标签里面配置一点参数 经过测试,发现这样做也是可以的。但是如果是同一种配置信息,比如你集成了OkHttp,又写一个标签集成Volley,最后一个会把前面的覆盖掉。

1、前面我们已经学习到可以加载gif图,可以加载静态gif图即gif图的第一帧,如果非gif图用方法加载呢?这时候会报错。。Glide默认可以自动识别图片格式,加载gif图,所以在不确定图片格式的情况下,不要直接写asGif哦。

2、这样的异常如何处理? 记住不要再非主线程里面使用Glide加载图片,如果真的使用了,请把参数换成。希望可以帮你避免这个问题。

3、为什么有的图片第一次加载的时候只显示占位图,第二次才显示正常的图片呢? .如果你刚好使用了这个圆形库或者其他的一些自定义的圆形,而你又刚好设置了占位的话,那么,你就会遇到第一个问题。如何解决呢

方案一: 不设置占位; 方案二:使用Glide的Transformation API自定义圆形的转换。这里是一个已有的例子; 方案三:使用下面的代码加载图片

 

4、图片大小拉伸问题 有时候你会发现网络加载完了之后会有拉伸现象,而你的控件大小明明是自适应的呀,这是为什么呢,请你检查下你是否设置了占位图,有的话请去掉就ok了。

简单总结一下,我这里讲了Glide比较全面的用法,有如何加载图片,Glide的缓冲设置,Glide设置圆角,Glide设置图片的background,Glide加载GIF图片等,大家使用的话一般了解加载图片和圆角图片就可以了。这里在列举一下。

    以上就是本篇文章【Android Glide简单使用】的全部内容了,欢迎阅览 ! 文章地址:http://sicmodule.glev.cn/news/9686.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 歌乐夫资讯移动站 http://sicmodule.glev.cn/mobile/ , 查看更多   
最新新闻
美团点评的无边界陷“四面楚歌”?
出 品 | 异观财经作 者 | 炫夜白雪美团无边界拓展业务线的同时,势必会与携程、京东、拼多多等流量巨头狭路相逢,陷入“四面楚歌
预售仅5.7万,五一档票房垫底,古天乐新片卖不动,问题在哪?
今年五一档不出意外的话,算是提前宣告凉凉了。作为一个长达五天的黄金档期,截止4月27号17点,档期预售总票房竟然只有2253万,
从题分邦第三课桌到未来:沉浸式 AI 自习室,让学习效率飙升 30%!
回首学生时代,那场景依旧历历在目:小小的课桌上,堆积如山的课本几乎将视线完全遮挡,像一座座难以逾越的山丘。午后的阳光毫无
待你学AI智习室:专注力升级,自习效果倍增
在信息爆炸的时代,学习已成为一种随时随地可能进行的活动。然而,面对纷繁复杂的干扰,如何保持高效专注,让自习效果倍增,成为
《悬疑风暴席卷而来:四部年度巨制,你的心跳准备好了吗?》
序章:迷雾深处,悬疑剧热潮再起航在这个充满无限可能的时代,影视作品如同璀璨繁星,照亮了我们的视听世界。而其中,悬疑剧以其
悬疑剧《借命而生》官宣演员阵容!秦昊主演,还有三大实力派坐镇
秦昊在悬疑剧这个领域真的可以说是一骑绝尘了!从最开始的《隐秘的角落》,到去年的超级大爆款《漫长的季节》。秦昊可以说不出手
央八开播!12集警匪大剧来袭!秦昊主演,4位实力派助阵,能火
森林中迷雾笼罩,在押犯徐文国(韩庚饰)、姚斌彬(史彭元饰)拼命向森林深处跑。夜色中,杜湘东(秦昊饰)等看守以手电照明,在
“五一”假期出游指南:畅享假期,理性消费
2025年“五一”假期临近,旅游市场热度持续攀升。根据携程发布的《“五一”旅游出行预测报告》显示,今年“五一”旅游消费呈现长
泉城“五一”热门打卡地发布,这个假期来济南!一站式将快乐拉满
  生活不止眼前,这一站来济南。欢迎五湖四海的老师儿们,这个假期来济南,一站式将快乐拉满!
价值观 VS 算法:刘强东与王兴的商业哲学对决
    作者 | 韩勇执行总编,20 年 TOP100 企业高管,战略运营专家。来源  |   管理智慧 AI+咨询合作 | 王老师:13801295388