选项
请求选项
Glide 中大多数的选项可以使用 RequestOptions 类和 apply() 方法来应用。
使用请求选项(其中包括):
- 占位符
- 转换
- 缓存策略
- 组件特定选项,如编码或解码质量,Bitmap 配置。
例如,要应用 CenterCrop 、 Transformation ,您的代码可以这样编写:
import static com.bumptech.glide.request.RequestOptions.centerCropTransform;
Glide.with(fragment)
.load(url)
.apply(centerCropTransform(context))
.into(imageView);
从 RequestOptions 引入静态方法将是更加灵活的方式。
如果您始终想要在程序的不同部分共享选项,您可以实例化一个新的 RequestOptions 对象并传递给每个负载操作:
RequestOptions cropOptions = new RequestOptions().centerCrop(context);
...
Glide.with(fragment)
.load(url)
.apply(cropOptions)
.into(imageView);
apply() 可以被调用多次,所以 RequestOptions 可以组合。如果两个 RequestOptions 对象包含冲突的,那么最后设置的 RequestOptions 才会生效。
过渡选项
过渡选项决定在请求完成后,将会发生什么。
应用过渡选项:
- View 淡入
- 占位符淡出
- 没有过渡效果
没有过渡效果,您的图像会突然出现,立即替代之前的图像。为了避免突然改变,您可以淡入 View,或者使用过渡选项在 Drawable 之间淡入淡出。
例如,应用淡入淡出:
import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
Glide.with(fragment)
.load(url)
.transition(withCrossFade())
.into(view);
与 请求选项 不同, 过渡选项 是您使用 Glide 加载绑定资源的特殊类型。
因此,当您请求 Bitmap 时,您需要使用 BitmapTransitionOption 而不是 DrawableTransitionOptions 。因此,当您请求 Bitmap ,您可能需要的是简单的淡入,而不是淡入淡出。
RequestBuilder
在 Glide 中 RequestBuilder 是请求的核心,负责携带您的选项跟您请求 URL/模型开启新的负载。
使用 RequestBuilder 指定:
- 要加载的资源类型(Bitmap,Drawable 等等)
- 从 URL/模型中加载资源
- 加载资源到 View
- 任何您想申请的 RequestOption 对象
- 任何您想申请的 TransitionOption 对象
- 任何您想加载的缩略图
每次调用 Glide.with() 您都会产生一个 RequestManager 对象:
RequestManager requestManager = Glide.with(this);
选择资源类型
RequestManager 可以指定加载的资源类型。默认情况下,获取的是 Drawable RequestBuilder。您可以使用 as... 方法改变请求类型。例如,您可以调用 asBitmap() 您将获取一个 Bitmap RequestBuilder 。
RequestBuilder<Bitmap> requestBuilder = Glide.with(fragment).asBitmap();
应用请求选项
如上所示,通过 apply() 方法应用 请求选项 ,使用 transition() 方法应用 过渡选项 :
RequestBuilder<Drawable> requestBuilder = Glide.with(this).asDrawable();
requestBuilder.apply(requestOptions);
requestBuilder.transition(transitionOptions);
启动多个负载时,RequestBuilder 可以被重用:
RequestBuilder<Drawable> requestBuilder =
Glide.with(fragment)
.asDrawable()
.apply(requestOptions);
for (int i = 0; i < numViews; i++) {
ImageView view = viewGroup.getChildAt(i);
String url = urls.get(i);
requestBuilder.load(url).into(view);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论