安卓格力:等待未来的到来和加载

问题描述 投票:0回答:1

我有一个api,可以返回 ListenableFuture<Uri>.

如何让glide等待未来再加载uri?

我看了 在线 寻求一些帮助,但找不到具体的案例。

我不想自己添加一个监听器,将来再把实际的uri值传给 Glide.load 并想做一些类似的事情。

 Glide.with(context)
                .asDrawable()
                .load(uriFuture)
                .transform(Drawable.class, getBackgroundTransformation())
                .into(albumArtView);

基本上,当未来完成时,glide应该开始加载uri。

android android-glide
1个回答
-1
投票

使用下面的代码

@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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.