问题
I want to show the image using Glide animation. I'm downloading this image from the server. The animation is working fine when it downloads from the server but it's not working when the image is taken from Glide cache
requestOptions.skipMemoryCache(true);
requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);
Please check my code below
RequestOptions requestOptions = new RequestOptions();
requestOptions.timeout((int) NetworkParam.CONNECTION_TIME_OUT);
requestOptions.placeholder(R.drawable.img_blue_shirt);
requestOptions.priority(Priority.HIGH);
requestOptions.signature(new ObjectKey(String.valueOf(imgName)));
//requestOptions.skipMemoryCache(true);
requestOptions.diskCacheStrategy(DiskCacheStrategy.NONE);
//requestOptions.error(R.drawable.img_blue_shirt);
try {
Glide.with(imageView.getContext().getApplicationContext())
.load(imgUrl)
.transition(GenericTransitionOptions.with(R.anim.anim_slide_in_left))
.apply(requestOptions)
.into(imageView);
} catch (Exception ex) {
ex.printStackTrace();
}
回答1:
According to the documentation here, in Glide v4 you can implement and apply a custom TransitionFactory
.
For always crossfading, in Kotlin you can:
- Implement the
TransitionFactory
interface
class DrawableAlwaysCrossFadeFactory : TransitionFactory<Drawable> {
private val resourceTransition: DrawableCrossFadeTransition = DrawableCrossFadeTransition(300, true) //customize to your own needs or apply a builder pattern
override fun build(dataSource: DataSource?, isFirstResource: Boolean): Transition<Drawable> {
return resourceTransition
}
}
- Apply it as a transition
GlideApp.with(this)
.load(url)
.transition(DrawableTransitionOptions.with(DrawableAlwaysCrossFadeFactory()))
.into(image)
回答2:
By default, Glide will not animate the image when loading it. If images are cached on disk, Glide will animate. To change that, define a custom TransitionFactory and pass it in with DrawableTransitionOptions.
For an example implementation, see the cross fade factory: https://github.com/bumptech/glide/blob/master/library/src/main/java/com/bumptech/glide/request/transition/DrawableCrossFadeFactory.java
回答3:
yes I got my answer here we cant apply animation on cached image in glide for more info please check below link
https://bumptech.github.io/glide/doc/transitions.html
回答4:
To apply image change transition in glide 4.10 use
Glide.with(this).load(artwork)
..transition(DrawableTransitionOptions.withCrossFade())
.into(playerBackground);
来源:https://stackoverflow.com/questions/53664645/how-to-apply-animation-on-cached-image-in-glide