Glide没有对从缓存加载的ImageView进行动画处理

6

我正在使用Glide作为我的图像加载器,并希望在背景中淡入图像。我遇到的问题是,一旦图像已经显示过一次,它就不会再次执行动画。

int i = 0;
int[] images = {
        R.drawable.sunset1,R.drawable.sunset2,R.drawable.sunset3
}; 

if(i < images.length - 1){
 i++;
}else{
 i = 0;
}
Glide.with(MainActivity.this).load(images[i]).placeholder(imageView.getDrawable()).crossFade(1000).into(imageView);

看起来你可能已经在GitHub上开了一个问题,但如果没有,请查看:https://github.com/bumptech/glide/issues/241 - Sam Judd
2个回答

0

我刚遇到了同样的问题。

使用Glide实现,添加以下内容:

.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)

例如:

Glide.with(requireContext())
              .load(imageUrl)
              .diskCacheStrategy(DiskCacheStrategy.NONE)
              .skipMemoryCache(true)
              .into(it)

还有另一种解决方法,如果您能够识别图像更改,则将新文件命名如下:

.signature(new StringSignature(String.valueOf(MY_FILE_NAME)))

如果您想每次加载最新的图像,请使用以下代码:

.signature(new StringSignature(String.valueOf(System.currentTimeMillis())))

0

这看起来是Glide的预期行为。如果您查看animate方法的源代码,其中有以下注释:

仅在资源异步加载时运行(即不在内存缓存中)

要解决此问题,您可以简单地使用ImageView#startAnimation方法来使图像动画化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接