返回

Glide v4 源码浅析(3)- into(上)

Android

Glide 图片加载框架通过 into 方法为视图设置图片。在前文《Glide v4 源码浅析(2)- load 方法与 Registry 说明》中,我们通过 load 方法获得了一个 RequestBuilder 对象,这里将调用它的 into 方法传入 ImageView,开始加载资源并显示在 ImageView 上。

RequestBuilder.into 方法接收一个 Target<T> 对象作为参数,用于指定加载到的图片将显示在哪个控件上。Target 接口定义了用于接收和显示加载到的资源的回调方法,在 Glide 中提供了多种 Target 实现,例如 ImageViewTargetViewTarget 等。

Glide v4 中的 into 方法实现位于 Glide 类中,简化了内部实现的复杂性。当调用 into 方法时,会创建一个 EngineJob 对象,该对象负责管理加载和显示图片的整个流程。

public <T> void into(Target<T> target) {
  into(target, null);
}

EngineJob 是 Glide 中用于管理加载和显示图片的类,它封装了加载和显示资源的逻辑。EngineJob 的主要职责是:

  • 根据 RequestBuilder 的配置加载资源。
  • 将加载到的资源转换为目标类型(例如 Bitmap)。
  • 将转换后的资源显示在目标控件上。

在 Glide 中,不同的控件类型使用不同的 Target 实现:

  • ImageView:使用 ImageViewTarget
  • View:使用 ViewTarget
  • Bitmap:使用 BitmapTarget

RequestBuilder.into 方法是 Glide 加载和显示图片的关键步骤。它创建了一个 EngineJob,负责管理加载和显示图片的整个流程。Glide 使用不同的 Target 实现来针对不同的控件类型显示资源,为开发人员提供了灵活性和可定制性。