public Target<TranscodeType> into(ImageView view) {
Util.assertMainThread();
if (view == null) {
throw new IllegalArgumentException("You must pass in a non null View");
}
if (!isTransformationSet && view.getScaleType() != null) {
switch (view.getScaleType()) {
case CENTER_CROP:
applyCenterCrop();
break;
case FIT_CENTER:
case FIT_START:
case FIT_END:
applyFitCenter();
break;
//$CASES-OMITTED$
default:// Do nothing.
}
}
return into(glide.buildImageViewTarget(view, transcodeClass));
}
public class ImageViewTargetFactory {
public <Z> Target<Z> buildTarget(ImageView view, Class<Z> clazz) {
if (GlideDrawable.class.isAssignableFrom(clazz)) {
return (Target<Z>) new GlideDrawableImageViewTarget(view);
} else if (Bitmap.class.equals(clazz)) {
return (Target<Z>) new BitmapImageViewTarget(view);
} else if (Drawable.class.isAssignableFrom(clazz)) {
return (Target<Z>) new DrawableImageViewTarget(view);
} else {
throw new IllegalArgumentException("Unhandled class: " + clazz + ", try .as*(Class).transcode(ResourceTranscoder)");
}
}
}
GlideDrawableImageViewTarget.java 有实现LifecycleListener
//真正的加载、缓存,放在Engi
Glide阅读笔记(三)图片真正加载、解码、图片尺寸
最新推荐文章于 2022-02-12 13:58:17 发布
本文探讨了Glide在图片加载过程中的详细步骤,包括从缓存读取图片,若缓存缺失则通过OkHttpStreamFetcher进行网络下载。下载完成后的关键步骤是解码,使用自定义的解码器进行源数据解码,实现图片尺寸适配。
摘要由CSDN通过智能技术生成