Glideで画像切替え時に一瞬背景が表示される現象を抑制する方法 | Androidアプリ開発

GlideはAndroidアプリ開発において使用できる、極めて優秀な画像表示ライブラリのひとつです。

しかしながら、Glideをスライドショーのように画像を切り替えると、
遷移中に一瞬だけ背景が表示されて気になりました。

その対処方法を見つけたので記事に残しておきます。

対処方法

通常、Glideでローカルファイルの画像を表示するコードは以下です。
File file = new File("XXXXXXXXXX");
Uri uri = Uri.fromFile(file);
final ImageView iv = findViewById(R.id.IV);
        
Glide.with(activity)
    .load(uri)
    .into(iv);
これで再度同じようなコードで画像を切り替えると、一瞬だけ背景が表示されてしまいます。

コードを実施してみると分かるのですが、
Glideを使用せずにImageViewにリソースを設定した場合は背景が表示されません。

よって、背景が表示される現象を回避するためには、
以下のようにGlideでリソースを読み込んだ後に、ImageViewにリソースをセットするようにコードを書き換えます。
//onResourceReadyでリソース読み込み完了後の処理を実装できる
Glide.with(this)
        .load(uri)
        .into(new SimpleTarget<Drawable>() {
            @Override
            public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {
                iv.setImageDrawable(resource);
            }
        });
こうすることで、背景が一瞬だけ表示される現象を回避することができます。

注意点

この方法を利用できるのは通常の画像ファイルのみで、GIFファイルには使用することができません。

GIF画像で前述のコードを実行しても、クラッシュしたりすることはないのですが、
GIFのアニメーションが描画されず、最初の1フレームのみがImageViewにセットされてしまいます。

まとめ

この記事ではGlideにおいて画像切り替え時に一瞬だけ背景が表示されてしまう現象を回避する方法を紹介しました。

同じ現象で困っている方がおりましたら、ご参考にしてください。
タイトルとURLをコピーしました