我有一个api,可以返回 ListenableFuture<Uri>
.
如何让glide等待未来再加载uri?
我看了 在线 寻求一些帮助,但找不到具体的案例。
我不想自己添加一个监听器,将来再把实际的uri值传给 Glide.load
并想做一些类似的事情。
Glide.with(context)
.asDrawable()
.load(uriFuture)
.transform(Drawable.class, getBackgroundTransformation())
.into(albumArtView);
基本上,当未来完成时,glide应该开始加载uri。
使用下面的代码
@BindingAdapter({"bind:src_url", "bind:progress"})
public static void setChatSrcUrl(final ImageView view, String sourceUrl, final ProgressBar pb) {
if (sourceUrl == null) {
view.setImageResource(R.drawable.gray_wifi);
pb.setVisibility(View.GONE);
} else {
pb.setVisibility(View.VISIBLE);
Glide.with(view.getContext())
.asBitmap()
.load(sourceUrl)
.override(250, 400)
.fitCenter()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.gray_wifi)
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
pb.setVisibility(View.GONE);
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
pb.setVisibility(View.GONE);
return false;
}
})
.into(view);
}
}