1.简介
Glide is a fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface.
Glide是一款快速高效的Android开源媒体管理和图像加载框架,它将媒体解码,内存和磁盘缓存以及资源池包装成简单易用的界面。
中文参考文档:https://muyangmin.github.io/glide-docs-cn/
2.依赖
权限声明
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
3.简单使用
多数情况下,使用Glide加载图片非常简单,一行代码足矣:
Glide.with(fragment)
.load(myUrl)
.into(imageView);
- 在 Application 模块中的使用(支持更多功能)
在 Application 模块中,可创建一个添加有 @GlideModule 注解,继承自 AppGlideModule 的类。此类可生成出一个流式 API,内联了更多选项。
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
@GlideModule
public class MyAppGlideModule extends AppGlideModule {
}
生成的 API 默认名为 GlideApp
,与 AppGlideModule
的子类包名相同。在 Application 模块中将 Glide.with()
替换为 GlideApp.with()
GlideApp.with(this).load("http://goo.gl/gEgYUd").into(imageView);
GlideApp
.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);
4.缓存策略
- DiskCacheStrategy.NONE 不缓存文件
- DiskCacheStrategy.SOURCE 只缓存原图
- DiskCacheStrategy.RESULT 只缓存最终加载的图(默认的缓存策略)
- DiskCacheStrategy.ALL 同时缓存原图和结果图
GlideApp.with(fragment)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
5.缓存
GlideApp.with(fragment)
.load(url)
.onlyRetrieveFromCache(true) //仅从缓存加载图片
.skipMemoryCache(true) //如果你想确保一个特定的请求跳过磁盘和/或内存缓存
.into(imageView);
6.圆形图片
RequestOptions mRequestOptions = RequestOptions.circleCropTransform()
.skipMemoryCache(true);//不做内存缓存
GlideApp.with(this)
.load(imgUrl)
.centerCrop()
.apply(mRequestOptions)
.placeholder(R.drawable.ic_launcher_background)//加载中显示的图片
.error(R.drawable.ic_launcher_foreground)// 错误后显示的图片
.into(mImg);
7.圆角图片
//设置图片圆角角度
RoundedCorners roundedCorners= new RoundedCorners(6);
//通过RequestOptions扩展功能,override:采样率,因为ImageView就这么大,可以压缩图片,降低内存消耗
RequestOptions options=RequestOptions.bitmapTransform(roundedCorners).override(300, 300);
GlideApp.with(context)
.load(files.getFilePath())
.apply(options)
.into(img);
Glide 4.0以上支持圆角和圆形图片,3.0只能通过外库支持。