android - 使用 Glide 刷新 ImageView

标签 android imageview refresh android-glide

我有一个 ImageView 和一张用 Glide 加载的图像:

Glide.with(ImageView.getContext())
    .load(url)
    .dontAnimate()
    .placeholder(R.drawable.placeholder)
    .signature(stringSignature)
    .into(new GlideDrawableImageViewTarget(ImageView) {
        @Override
        public void onResourceReady(GlideDrawable drawable, GlideAnimation anim) {
            super.onResourceReady(drawable, anim);
            progressBar.setVisibility(View.GONE);
        }
    });

当我想刷新图像时,我只使用新签名再次运行相同的代码。它工作完美,但是当开始新的加载时,可见图像立即消失。

问题

Is possible keep the image in ImageView and replace it after new image is downloaded?

最佳答案

这是预期的行为。
每次调用 .load(x) 时,Glide 都会在目标及其相关请求上调用 .clear()
这就是 Glide 能够处理其位图池的方式,否则它无法知道何时回收位图。
为了实现这个,你需要在两个Target之间切换,这里是核心思想:

    public <T> void loadNextImage(@NonNull T model,
                                  @NonNull BitmapTransformation... transformations) {
        //noinspection MagicNumber
        int hash = model.hashCode() + 31 * Arrays.hashCode(transformations);
        if (mLastLoadHash == hash) return;
        Glide.with(mContext).load(model).asBitmap().transform(transformations).into(mCurrentTarget);
        mLastLoadHash = hash;
    }

Target mCurrentTarget;



private class DiaporamaViewTarget extends ViewTarget<ImageView, Bitmap> {

        @Override
        public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
            mLoadedDrawable = new BitmapDrawable(mImageView.getResources(), resource);
           // display the loaded image 
            mCurrentTarget = mPreviousTarget;

关于android - 使用 Glide 刷新 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29354510/

相关文章:

javascript - 如何删除 ASP.NET 中 UpdatePanel 刷新时重复的 JavaScript 代码?

android - 在滚动自定义布局隐藏或显示

android - 结构依赖项不起作用

java - 如何将 android.net.Uri 转换为 java.net.URL?

android - 当布局具有属性 android : layout_height = "wrap_content"? 时,如何在布局底部设置元素

javascript - JQuery Ajax 强制页面刷新

android - android 中的 onKeyDown 方法重写

android - 在 Android 的 Mono 屏幕旋转后设置图像时出现内存错误

android - 如何更改 ImageView 的大小?

javascript - 具有自适应时间间隔的 AJAX 刷新