【问题标题】:Glide not animating ImageView loaded from cache滑翔没有动画从缓存加载的ImageView
【发布时间】:2014-11-07 19:42:51
【问题描述】:
我使用 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);
【问题讨论】:
标签:
android
imageview
handler
android-glide
【解决方案1】:
这看起来像是 Glide 的预期行为。如果你查看animate方法的源代码,评论中有这段文字:
只有在资源被异步加载(即不在内存缓存中)时才会运行
要绕过它,您可以简单地使用ImageView#startAnimation 方法让图像动画化。
【解决方案2】:
我也遇到了同样的问题。
用 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())))