离线下载
获取电子书

bruintong · 更新于 2018-01-20 09:01:00

选项

请求选项

Glide中大多数的选项可以使用RequestOptions类和apply()方法来应用。

使用请求选项(其中包括):

  • 占位符
  • 转换
  • 缓存策略
  • 组件特定选项,如编码或解码质量,Bitmap配置。

例如,要应用CenterCropTransformation,您的代码可以这样编写:

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);
}
上一篇: 占位符 下一篇: 转换