如何在 Glide 中的缓存图像上应用动画
How to apply animation on cached image in Glide
我想用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();
}
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.
有关示例实现,请参阅淡入淡出工厂:https://github.com/bumptech/glide/blob/master/library/src/main/java/com/bumptech/glide/request/transition/DrawableCrossFadeFactory.java
是的,我在这里得到了答案,我们无法在 glide 中对缓存图像应用动画有关更多信息,请查看下方 link
根据文档 here,在 Glide v4 中,您可以实施和应用自定义 TransitionFactory
。
对于始终交叉渐变,在 Kotlin 中您可以:
- 实现
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
}
}
- 将其作为过渡应用
GlideApp.with(this)
.load(url)
.transition(DrawableTransitionOptions.with(DrawableAlwaysCrossFadeFactory()))
.into(image)
要在 glide 4.10 中应用图像更改过渡,请使用
Glide.with(this).load(artwork)
..transition(DrawableTransitionOptions.withCrossFade())
.into(playerBackground);
我想用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();
}
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.
有关示例实现,请参阅淡入淡出工厂:https://github.com/bumptech/glide/blob/master/library/src/main/java/com/bumptech/glide/request/transition/DrawableCrossFadeFactory.java
是的,我在这里得到了答案,我们无法在 glide 中对缓存图像应用动画有关更多信息,请查看下方 link
根据文档 here,在 Glide v4 中,您可以实施和应用自定义 TransitionFactory
。
对于始终交叉渐变,在 Kotlin 中您可以:
- 实现
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
}
}
- 将其作为过渡应用
GlideApp.with(this)
.load(url)
.transition(DrawableTransitionOptions.with(DrawableAlwaysCrossFadeFactory()))
.into(image)
要在 glide 4.10 中应用图像更改过渡,请使用
Glide.with(this).load(artwork)
..transition(DrawableTransitionOptions.withCrossFade())
.into(playerBackground);