グライドアニメーションを使って画像を表示したい。この画像をサーバーからダウンロードしています。サーバーからダウンロードするとアニメーションは正常に機能しますが、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();
}
はい私はここで私の答えを得ました私たちはグライドでキャッシュされた画像にアニメーションを適用することはできません詳細については以下のリンクを確認してください
ドキュメントによると ここ 、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)
グライド4.10で画像変更遷移を適用するには、
Glide.with(this).load(artwork)
..transition(DrawableTransitionOptions.withCrossFade())
.into(playerBackground);
デフォルトでは、Glideは画像の読み込み時に画像をアニメーション化しません。画像がディスクにキャッシュされている場合、Glideはアニメーション化します。これを変更するには、カスタムTransitionFactoryを定義し、それをDrawableTransitionOptionsで渡します。
実装例については、クロスフェードファクトリを参照してください。 https://github.com/bumptech/glide/blob/master/library/src/main/Java/com/bumptech/glide/request/transition/DrawableCrossFadeFactory .Java