web-dev-qa-db-ja.com

グライドでキャッシュされた画像にアニメーションを適用する方法

グライドアニメーションを使って画像を表示したい。この画像をサーバーからダウンロードしています。サーバーからダウンロードするとアニメーションは正常に機能しますが、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();
}
4
Sumit Bandekar

はい私はここで私の答えを得ました私たちはグライドでキャッシュされた画像にアニメーションを適用することはできません詳細については以下のリンクを確認してください

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

0
Sumit Bandekar

ドキュメントによると ここ 、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)
4
tudor

グライド4.10で画像変更遷移を適用するには、

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

デフォルトでは、Glideは画像の読み込み時に画像をアニメーション化しません。画像がディスクにキャッシュされている場合、Glideはアニメーション化します。これを変更するには、カスタムTransitionFactoryを定義し、それをDrawableTransitionOptionsで渡します。

実装例については、クロスフェードファクトリを参照してください。 https://github.com/bumptech/glide/blob/master/library/src/main/Java/com/bumptech/glide/request/transition/DrawableCrossFadeFactory .Java

1
Dhanshri