load 调用
with 之后,下一步就是 load,方法接受不同类型的参数,例如 URL、本地文件路径、资源 ID 等,用于指定要加载的图片资源。
- 当调用
load()
方法时,Glide 会根据指定的资源创建一个请求对象 RequestBuilder - 该对象提供了许多配置选项,可以通过链式调用方法来配置加载选项,例如设置占位图、错误图、加载动画、缩放类型等。
活动图
源码分析
public RequestBuilder<Drawable> load(@Nullable Uri uri) {
return asDrawable().load(uri);
}
// 先跟进看 asDrawable 方法,最终返回一个 RequestBuilder
public RequestBuilder<Drawable> asDrawable() {
return as(Drawable.class);
}
public <ResourceType> RequestBuilder<ResourceType> as(
@NonNull Class<ResourceType> resourceClass) {
return new RequestBuilder<>(glide, this, resourceClass, context);
}
// 接着调用 RequestBuilder 的 load 方法
public RequestBuilder<TranscodeType> load(@Nullable Uri uri) {
return maybeApplyOptionsResourceUri(uri, loadGeneric(uri));
}
// 最后走到 loadGeneric
private RequestBuilder<TranscodeType> loadGeneric(@Nullable Object model) {
if (isAutoCloneEnabled()) {
return clone().loadGeneric(model);
}
this.model = model;
isModelSet = true;
return selfOrThrowIfLocked();
}