入门指南

基本用法

使用Glide加载图像很容易,通常情况下只需要一行代码:

Glide.with(fragment)
    .load(myUrl)
    .into(imageView);

取消您不再需要的负载也很简单:

Glide.with(fragment).clear(imageView);

尽管清除不再需要的负载是好的做法,但您不需要这样做。事实上,当您通过Glide.with()方法传入的Activity或者Fragment被销毁时,Glide将自动清除负载并且回收负载使用的任何资源。

应用

应用程序可以添加恰当的注解给AppGlideModule实现,以生成灵活的API,其中包含大多数选项,包括在集成库中定义的选项。

package com.example.myapp;

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

默认情况下,生成的API会跟您的AppGlideModule实现在同一包下,类名为GlideApp。使用该API,应用程序可以在所有的负载中用GlideApp.with()代替Glide.with()

GlideApp.with(fragment)
   .load(myUrl)
   .placeholder(placeholder)
   .fitCenter()
   .into(imageView);

有关更多信息,请参阅Glide的生成的API页面。

ListView和RecyclerView

在ListView或者RecyclerView中加载图像使用相同的加载行,就像加载到单个的View一样。Glide会处理View的复用跟请求的自动取消。

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    String url = urls.get(position);
    Glide.with(fragment)
        .load(url)
        .into(holder.imageView);
}

您不需要检测您传递的URL是否为空,如果URL为空,Glide会清除这个View或者使用您指定的占位图像,或者回调的图像。

Glide唯一的要求是,对于任何可重用的目标View,您可以复用之前的View加载新的图像或者调用clare()API来显示的清除。

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    if (isImagePosition(position)) {
        String url = urls.get(position);
        Glide.with(fragment)
            .load(url)
            .into(holder.imageView);
    } else {
        Glide.with(fragment).clear(holder.imageView);
        holder.imageView.setImageDrawable(specialDrawable);
    }
}

通过调用clear()或者into(view)方法作用在View上,您可以取消负载或者保证Glide在调用完成之后不会改变View的内容。如果您忘记调用clear()方法并且没有在该View上开启新的图像负载,那么在复用之前的位置的View时,您将不能指定Drawable,并且可能会加载到老的图像从而改变View的内容。

虽然,我们在这里展示的示例是RecyclerView,但同样的原则也适用于ListView。

results matching ""

    No results matching ""