图片回调的流程
前面的文章详细介绍了Glide加载图片的流程,这里我们重点回顾一下图片的的显示流程:DecodeJob完成图片的装载之后,会回调到notifyEncodeAndRelease()方法,之后的流程如下:
上面的流程可以看到,图片展示的地方是在Target的onResourceReady()中执行的。这里的Target是哪个步骤构建的呢?回顾一下前面的文章流程中可以知道,在into()方法中,会构建Target,在Request的构建中,Target作为参数传进Request中。
自定义Target的原理和实现
上面的图片回调流程基本上就介绍了Target的原理,自定义Target的时候,只需要实现onResourceReady()方法中展示图片即可,使用定义Target的用法如下:
SimpleTarget<GlideDrawable> simpleTarget = new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation glideAnimation) {
imageView.setImageDrawable(resource);
}
};
public void loadImage(View view) {
String url = "http://cn.bing.com/az/hprichbg/rb/TOAD_ZH-CN7336795473_1920x1080.jpg";
Glide.with(this)
.load(url)
.into(simpleTarget);
以上是基本的自定义Target的用法,掌握了图片的显示流程就可以定义复杂的Target,实现复杂的图片加载需求。
Preload的功能和原理
preload()可以替换into()法的另外一个方法,和into()不同的是,preload()方法只加载图片,而不显示图片,是一种图片预加载的功能,使真正显示图片的时候不需要从网络获取,提高图片的显示速度。preload()方法是如何实现不加载图片的呢?通过前面的图片加载流程,我们知道,获取图片之后DecodeJob会执行图片的显示流程,而图片显示是Target完成的。之前的文章分析Glide加载图片的流程的时候我们知道into()方法,Glide内部逻辑中会构建一个Target,这个Targe

本文深入探讨了Glide的图片回调流程,包括自定义Target的原理、Preload和downloadOnly的功能与实现,以及Listener的使用。通过分析源码,展示了如何在Android中实现高效图片加载和预加载,同时提供了相关技术资源和学习资料。
最低0.47元/天 解锁文章
2442

被折叠的 条评论
为什么被折叠?



