Android向け画像読み込みライブラリ「Glide」
いつもお世話になってるけど、GIFアニメもOKだった(´ω`)
でも、ループしてほしくないな〜とおもったら、
issueに対応方法があったので、調べたときの備忘録。
build.gradle
dependencies { implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' }
使い方
// For a simple view: @Override public void onCreate(Bundle savedInstanceState) { // ... ImageView imageView = (ImageView) findViewById(R.id.my_image_view); Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView); }
ループ回数を制限してGIFを表示する
このissueによると、DrawableImageViewTarget
を使えばOKらしい。
@Override public void onCreate(Bundle savedInstanceState) { // ... ImageView imageView = (ImageView) findViewById(R.id.my_image_view); Glide.with(this).load("http://goo.gl/gEgYUd") .into(new DrawableImageViewTarget(imageView) { @Override public void onResourceReady(Drawable resource, @Nullable Transition<? super Drawable> transition) { if (resource instanceof GifDrawable) { ((GifDrawable) resource).setLoopCount(2); } super.onResourceReady(resource, transition); } }); }
ループ回数を設定できるクラスを作るとこんな感じ。
import android.graphics.drawable.Drawable; import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.bumptech.glide.load.resource.gif.GifDrawable; import com.bumptech.glide.request.target.DrawableImageViewTarget; import com.bumptech.glide.request.transition.Transition; public class LoopGifDrawableImageViewTarget extends DrawableImageViewTarget { private int loopCount = 0; public LoopGifDrawableImageViewTarget(ImageView view, int loopCount) { super(view); this.loopCount = loopCount; } @Override public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) { if (resource instanceof GifDrawable) { if (this.loopCount > 0) { ((GifDrawable) resource).setLoopCount(this.loopCount); } } super.onResourceReady(resource, transition); } }
@Override public void onCreate(Bundle savedInstanceState) { // ... ImageView imageView = (ImageView) findViewById(R.id.my_image_view); Glide.with(this).load("http://goo.gl/gEgYUd") .into(new LoopGifDrawableImageViewTarget(imageView)); }
以上!! 簡単!!