annotationProcessor ‘com.github.bumptech.glide:compiler:4.12.0’
2.创建一个添加有 @GlideModule 注解,继承自 AppGlideModule 的类。此类可生成出一个流式 API,内联了多种选项和集成库中自定义的选项:
@GlideModule
public class MyGlideModule extends AppGlideModule
{
}
3.生成的 API 默认名为 GlideApp ,与 AppGlideModule 的子类包名相同。在 Application 模块中将 Glide.with() 替换为 GlideApp.with(),即可使用该 API 去完成加载工作。
GlideApp.with(this).load(uri).circleCrop().into(agb.ivCirclecrop);
Android Studio 在大多数时候都可以正确地处理注解处理器 (annotation processor) 和 generated API。然而,当你第一次添加你的 AppGlideModule 或做了某些类型的修改后,你可能需要重新构建 (rebuild) 你的项目。 如果你发现 API 没有被 import ,你可以通过以下方法重新构建:
-
1.打开 Build 菜单;
-
2.点击 Rebuild Project。
定制请求
Glide 提供了许多可应用于单一请求的选项,包括变换、过渡、缓存选项等。
1.默认选项可以直接应用于请求上:
GlideApp.with(this).load(uri)
.placeholder(R.mipmap.sc2)
.error(R.mipmap.sc1)
.override(150)
.circleCrop().into(agb.ivOptions);
2.通过 RequestOptions 类来在多个请求之间共享:
RequestOptions requestOptions = new RequestOptions().circleCrop()
.placeholder(R.mipmap.sc2)
.error(R.mipmap.sc1).override(150);
GlideApp.with(this).load(uri).apply(requestOptions).into(agb.ivOptions);
GlideApp.with(this).load(uri).apply(requestOptions).into(agb.ivCirclecrop);
GlideExtension
Glide Generated API 可在 Application 和 Library 中被扩展。扩展使用被注解的静态方法来添加新的选项、修改现有选项、甚至添加额外的类型支持。
被 @GlideExtension 注解的类应以工具类的思维编写。这种类应该有一个私有的、空的构造方法,应为 final 类型,并且仅包含静态方法。被注解的类可以含有静态变量,可以引用其他的类或对象。
被 @GlideExtention 注解的类有两种扩展方式:
-
GlideOption - 为 RequestOptions 添加一个自定义的选项。
-
GlideType - 添加对新的资源类型的支持(GIF,SVG 等等)。
GlideOption
1.创建一个添加有 @GlideExtension注解的类。此类可生成出一个流式 API,内联了多种选项和集成库中自定义的选项:
@GlideExtension
public final class MyGlideExtension {
private MyGlideExtension(){}
@GlideOption
public static BaseRequestOptions<?> applyHeadScc(BaseRequestOptions<?> options,int size){
return options.circleCrop()
.override(size)
.placeholder(R.mipmap.sc2)
.error(R.mipmap.sc1);
}
}
2.这将在RequestOptions子类中生成一个如下所示的方法:
public class GlideOptions extends RequestOptions {
/**
* @see MyGlideExtension#applyHeadScc(BaseRequestOptions, int)
*/
@SuppressWarnings(“unchecked”)
@CheckResult
@NonNull
public GlideOptions applyHeadScc(int size) {
return (GlideOptions) MyGlideExtension.applyHeadScc(this, size);
}
…
}
3.可以根据需要在方法中包含任意数量的附加参数,只要第一个参数始终为RequestOptions:
@GlideOption
public static BaseRequestOptions<?> applyHeadScc(BaseRequestOptions<?> options,int size){
return options.circleCrop()
.override(size)
.placeholder(R.mipmap.sc2)
.error(R.mipmap.sc1);
}
4.附加参数将作为参数添加到生成的方法中:
public GlideOptions applyHeadScc(int size) {
retu