android - Android Glide:等待未来并加载
问题描述
我有一个返回的 api ListenableFuture<Uri>
。
如何让 glide 等待未来然后加载 uri?
我在网上寻找了一些帮助,但找不到确切的案例。
我不想自己为未来添加一个监听器,然后将实际的 uri 值传递给Glide.load
并想做类似的事情:
Glide.with(context)
.asDrawable()
.load(uriFuture)
.transform(Drawable.class, getBackgroundTransformation())
.into(albumArtView);
基本上,当 future 完成时,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);
}
}
推荐阅读
- sqlite - 在 Sqlite 中使用 WHERE NOT EXISTS 返回语法错误
- arduino - 如何使用电池为 ESP32 供电
- python - 主 x 轴在顶部,次 x 轴在底部
- ffmpeg - 来自 7z 文件的 SHA256 与 FFMPEG 下载 SHA 不匹配
- azure - 如何基于 kusto 查询(KQL)语言中的命名键从 Json 中获取值
- c - C 是否有允许将 fprintf 转换为字符串的功能?
- python - Python在列表中显示不带逗号的数字
- python - 用户交互后如何让输入信息消失?
- python - 从 VS C++ 应用程序运行 VS Python 模块
- python-3.x - 无法为 python 代码构建 docker 映像