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

问题描述 投票:2回答:3

我想用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();
}
android android-glide
3个回答
2
投票

根据文档here,在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)

1
投票

默认情况下,Glide在加载图像时不会为其设置动画。如果图像缓存在磁盘上,Glide将设置动画。要更改它,请定义自定义TransitionFactory并使用DrawableTransitionOptions传递它。

有关示例实现,请参阅交叉淡化工厂:https://github.com/bumptech/glide/blob/master/library/src/main/java/com/bumptech/glide/request/transition/DrawableCrossFadeFactory.java


0
投票

是的,我在这里得到了答案,我们无法在滑行缓存图像上应用动画更多信息请查看以下链接

https://bumptech.github.io/glide/doc/transitions.html

© www.soinside.com 2019 - 2024. All rights reserved.