如何在 Glide 缓存图像上应用动画

9

我希望使用Glide动画展示一张图片,这张图片是从服务器上下载的。当它从服务器下载时,动画效果很好,但是当图片从Glide缓存中获取时,动画效果就无法实现。

requestOptions.skipMemoryCache(true);
requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);

请查看下面的代码:
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();
}

你是指缓存在磁盘上还是在内存中缓存? - Asteroid
它被存储在Glide缓存中,但我如何在来自缓存的图像上使用动画? - Sumit Bandekar
4个回答

13
根据此处的文档,您可以在Glide v4中实现和应用自定义TransitionFactory。
要始终进行交叉淡入淡出,在Kotlin中,您可以:
1.实现TransitionFactory接口
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. 将其作为过渡使用
GlideApp.with(this)
  .load(url)
  .transition(DrawableTransitionOptions.with(DrawableAlwaysCrossFadeFactory()))
  .into(image)

7

要在Glide 4.10中应用图像变换过渡,请使用

Glide.with(this).load(artwork)
                            ..transition(DrawableTransitionOptions.withCrossFade())
                            .into(playerBackground);

这个问题涉及缓存图像上的动画,这个解决方案对它们无济于事。 - Daniel

1

0

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