前言
一般项目我都会使用Glide作为我的图片加载框架,他和Picasso ,真的很像,郭大神早就分析过了,很详细,这里也就简单做个记录。小白白一枚,学习路上
Android图片加载框架最全解析(一),Glide的基本用法
Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
Android图片加载框架最全解析(三),深入探究Glide的缓存机制
Android图片加载框架最全解析(四),玩转Glide的回调与监听
Android图片加载框架最全解析(五),Glide强大的图片变换功能
Android图片加载框架最全解析(六),探究Glide的自定义模块功能
Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
一:GitHub
bumptech/glide
二:下载使用
点击,跳转到官网,介绍很详细
1. Gradle
1  | repositories {  | 
1  | dependencies {  | 
2. Android SDK 要求
- Min Sdk Version - 使用 Glide 需要 min SDK 版本 API 14 (Ice Cream Sandwich) 或更高。
 - Compile Sdk Version - Glide 必须使用 API 26 (Oreo) 或更高版本的 SDK 来编译。
 - Support Library Version - Glide 使用的支持库版本为 27。
 
否则会出现异常
解决方案
1  | dependencies {  | 
3.权限
1  | <uses-permission android:name="android.permission.INTERNET"/>  | 
二:apply && RequestOptions
4.0之前最常用的方式,当然现在也是哈
1  | Glide.with(this)  | 
4.0之后,有一个新的东西
1  | Glide.with(this)  | 
比如 我们加载占位图和错误图
1  | RequestOptions options = new RequestOptions()  | 
小伙伴们没看错,这样的方式,摆脱了,以前链式写法中,Glide很长很长,现在的话,我们可以传入一个RequestOptions,对象,就有小伙伴问了,有啥用,我觉得,比较容易封装,
例如
1  | public class GlideUtil {  | 
三:API 介绍
| API | 介绍 | 
|---|---|
| 占位符(Placeholder) | 当请求正在执行时被展示的 Drawable | 
| 错误符(Error) | 请求永久性失败时展示 | 
| 后备回调符(Fallback) | 在请求的url/model为 null 时展示 | 
| override | 指定了一个图片的尺寸,Target.SIZE_ORIGINAL加载图片的原始尺寸 | 
| skipMemoryCache(true) | 禁用内存缓存功能 | 
| diskCacheStrategy(DiskCacheStrategy.NONE) | 禁用硬盘缓存功能,参数列表如下 四(1) | 
| asBitmap() | 只允许加载静态图片,。如果传入的是GIF图,会展示GIF图的第一帧 | 
| asFile() | 指定文件格式 注意事项 如下 四(2) | 
| asDrawable() | 指定Drawable格式 | 
| submit() | 使用如下四(3) | 
| transforms | 图片变换,Glide 默认有3个,如下四(4) | 
四: 补充说明
1. diskCacheStrategy参数补充
| 参数 | 说明 | 
|---|---|
| DiskCacheStrategy.NONE | 表示不缓存任何内容。 | 
| DiskCacheStrategy.DATA | 表示只缓存原始图片。 | 
| DiskCacheStrategy.RESOURCE | 表示只缓存转换过后的图片。 | 
| DiskCacheStrategy.ALL | 表示既缓存原始图片,也缓存转换过后的图片。 | 
| DiskCacheStrategy.AUTOMATIC | 表示让Glide根据图片资源智能地选择使用哪一种缓存策略(默认选项)。 | 
2. asBitmap()注意坑
熟悉Glide 3的朋友对asBitmap()方法肯定不会陌生对吧?但是千万不要觉得这里就没有陷阱了,在Glide 3中的语法是先load()再asBitmap()的,而在Glide 4中是先asBitmap()再load()的。乍一看可能分辨不出来有什么区别,但如果你写错了顺序就肯定会报错了
3. submit()
通过如下代码,可以获取到,下载好的图片放在哪,可以看到 都在cache下
1  | new Thread(new Runnable() {  | 
4. transforms
内置有这3个
1  | RequestOptions options = new RequestOptions()  | 
一般我们还会自己去定义,以下是常用的3种转换
使用起来也很简单
1  | RequestOptions options = new RequestOptions()  | 
(1) 转成黑白
1  | package com.allens.lib_glide.Transformation;  | 
(2)高斯模糊
1  | package com.allens.lib_glide.Transformation;  | 
(3) 圆形
1  | package com.allens.lib_glide.Transformation;  | 
4.0 圆角
1  | package com.starot.spark.transformation;  | 
5.Generated API
如果4.0用的不爽,就想使用3.0版本的那种链式写法,将Glide 关键字改成
 GlideApp即可
1  | GlideApp.with(this)  |