Glide知识记录

Android 开发免不了加载图片,图片加载库也比较多,鉴于 Glide 是 Google 的亲儿子,做Android 开发,掌握 Glide 绝对不会吃亏,使用非常简单。

Glide 基本用法

配置 Gradle

配置 Gradle 依赖项,按照介绍配置依赖项,可能会有变化。

1
2
3
4
dependencies {
implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
}

配置 Permission

根据项目情况,可能会需要以下这些权限,最主要的还是网络权限。

1
2
3
4
5
6
7
8
9
10
11
12
<!--添加网络权限-->
<uses-permission android:name="android.permission.INTERNET" />

<!--允许访问网络状态-->
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />

<!--读取外部存储权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<!--写入外部存储权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Glide 使用

一行代码搞定图片下载与展示。如下所示:千万不要小瞧这一行代码。可以做到加载网络上的图片、加载手机本地的图片、加载应用资源中的图片等等。

1
2
3
4
5
6
7
8
9
Glide.with(this).load(URL).into(imageView);

// 加载本地图片
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);

// 加载应用资源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);

Glide 扩展使用

Glide 还有很多扩展内容,常用的扩展内容大概是占位符,指定格式图片,例如 Gif,Error 图片等,还有指定图片大小等扩展功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Glide.with(this)
.load(url)
.asGif()
//.asBitmap() 设置静态图片
//.asFile() 文件格式,用于下载
//.asDrawable() // Drawable格式,显示图片
.placeholder(R.drawable.loading) 占位图
.error(R.drawable.error) 异常占位图
.override(100, 100) 指定图片大小
.apply(RequestOptions.circleCropTransform()) 加载圆形图片
.transition(DrawableTransitionOptions.withCrossFade()) 淡入淡出效果
.thumbnail( 0.1f ) 缩略图 0.1f会显示原始图像的10%的大小
//.centerCrop() 图像裁剪 图像可能不会完整显示
//.fitCenter() 图像将会完全显示 可能不会填满控件
.into(imageView);

缓存类型

Gldie 默认是通过内存缓存与磁盘缓存来避免不必要的网络请求。如果有网络加载需求,可以自己设置跳过内存缓存或者跳过磁盘缓存。

内存缓存

下面的代码可以跳过内存缓存,但是不会跳过磁盘缓存。

1
.skipMemoryCache( true ) 跳过内存缓存,默认是false

PS:注意一个事实,对于相同的 URL ,如果你的初始请求没调用 .skipMemoryCache(true) 方法,你后来又调用了 .skipMemoryCache(true) 这个方法,这个资源将会在内存中获取缓存。当你想要去调整缓存行为时,确保对同一个资源调用的一致性。

磁盘缓存

上面关闭了内存缓存,Glide 还是会用磁盘缓存,如何跳过磁盘缓存呢,如下面代码所示:只禁止磁盘缓存,不影响内存缓存,如果需要两个都禁止,可以同时设置。、

1
.diskCacheStrategy(DiskCacheStrategy.NONE) 跳过磁盘缓存

磁盘缓存类型

Glide 有多个选项去配置磁盘缓存行为,Glide 的磁盘缓存是相当复杂,Picasso 仅仅缓存了全尺寸的图像。然而 Glide 缓存了原始图像,全分辨率图像和另外小版本的图像。

1
2
3
4
5
DiskCacheStrategy.NONE 不缓存
DiskCacheStrategy.RESOURCE 缓存转换后的版本
DiskCacheStrategy.DATA 只缓存原来的全分辨率的版本
DiskCacheStrategy.ALL 缓存所有版本
DiskCacheStrategy.AUTOMATIC 默认选项,Glide 自己选择适合的缓存策略

Glide 常用操作如上,一些不常用的扩展操作,比如截取视频,下载图片等,想了解的同学可以自己去查查自己了解下。

Picasso 和 Glide 对比
Glide 中文站

Glide