入口
上篇总结了下Glide利用fm和一个空Fragment 进行生命周期的管理,这里继续看load & into。不多说,上代码
// 上篇分析了with,继续看下 load & into
Glide.with(this).load("url").into(...);
- 1.1 load
public RequestBuilder<Drawable> load(@Nullable Object model) {
return asDrawable().load(model);
}
public RequestBuilder<Drawable> asDrawable() {
return as(Drawable.class);
}
// 实例一个RequestBuilder
public <ResourceType> RequestBuilder<ResourceType> as(Class<ResourceType> resourceClass) {
return new RequestBuilder<>(glide, this, resourceClass);
}
// RequestBuilder 构造中的 requestManager
protected RequestBuilder(Glide glide, RequestManager requestManager,
Class<TranscodeType> transcodeClass) {
this.glide = glide;
this.requestManager = requestManager;
this.context = glide.getGlideContext();
this.transcodeClass = transcodeClass;
this.defaultRequestOptions = requestManager.getDefaultRequestOptions();
this.transitionOptions = requestManager.getDefaultTransitionOptions(transcodeClass);
this.requestOptions = defaultRequestOptions;
}
- 2.1 into
public Target<TranscodeType> into(ImageView view) {
// 主线程校验(涉及View刷新)
Util.assertMainThread();
// View 非空校验
Preconditions.checkNotNull(view);
RequestOptions requestOptions = this.requestOptions;
if (!requestOptions.isTransformationSet()
&& requestOptions.isTransformationAllowed()
&& view.getS