Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to apply animation on cached image in Glide

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();
}
like image 779
Sumit Bandekar Avatar asked Dec 07 '18 06:12

Sumit Bandekar


People also ask

Does glide cache images by default?

Glide will put all image resources into the memory cache by default.

What is Glide placeholder?

Glide allows users to specify three different placeholders that are used under different circumstances: placeholder. error.


3 Answers

According to the documentation here, in Glide v4 you can implement and apply a custom TransitionFactory.

For always crossfading, in Kotlin you can:

  1. 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
  }
}
  1. Apply it as a transition
GlideApp.with(this)
  .load(url)
  .transition(DrawableTransitionOptions.with(DrawableAlwaysCrossFadeFactory()))
  .into(image)
like image 166
tudor Avatar answered Oct 28 '22 12:10

tudor


To apply image change transition in glide 4.10 use

Glide.with(this).load(artwork)
                            ..transition(DrawableTransitionOptions.withCrossFade())
                            .into(playerBackground);
like image 7
Vikash Sharma Avatar answered Oct 28 '22 13:10

Vikash Sharma


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

like image 1
Dhanshri Avatar answered Oct 28 '22 13:10

Dhanshri