gpt4 book ai didi

android - 使用 Glide 刷新 ImageView

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:43:58 31 4
gpt4 key购买 nike

我有一个 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com