Android Glide 的简单使用(一),海尔安卓面试总结

本文介绍了如何在Android中使用Glide进行图片加载,并展示了如何创建自定义GlideOption和GlideType以扩展其功能。通过AppGlideModule和@GlideModule注解配置内存和磁盘缓存,以及如何实现高斯模糊和自定义变换。同时,讨论了Glide的内存缓存、磁盘缓存策略以及如何从缓存中加载图片。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值