Tom*_*mas 5 android refresh imageview 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);
}
});
Run Code Online (Sandbox Code Playgroud)
当我想刷新图像时,我只用新签名再次运行相同的代码.它工作得很好,但是当新的加载开始时,可见图像立即消失.
题
是否可以将图像保留在ImageView中并在下载新图像后将其替换?
这是预期的行为。
每次调用时.load(x),Glide 都会调用.clear()目标及其关联的请求。
这就是 Glide 能够处理其位图池的方式,否则它将无法知道何时回收位图。
为了实现这一点,你需要在两个目标之间切换,这是核心思想:
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8572 次 |
| 最近记录: |