今回はJavaとKotlinでのアプリ開発でGifを再生する方法を紹介します。
Web上で調べてみると様々な方法がありますが
調べて試してみた結果このやり方が最もシンプルだと感じました。
目次
Glide
今回Gifを再生するためにGlideライブラリを使います。
https://github.com/bumptech/glide
build-gradleに追加
まずはbuild-gradleにGlideを追加します。
implementation 'com.github.bumptech.glide:glide:3.7.0'
ネット上のURLからGIFを使う方はManifestに以下も追加しておきましょう。
<uses-permission android:name="android.permission.INTERNET" />
ImageViewを追加
GifはImageViewで再生させるので
あらかじめImageViewを追加しておきます。
<ImageView android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="match_parent" />
Gifをrawファイルに入れておく
drawble/rawの中にGif画像を入れておいてください。
URLを用いる場合はこの手順は必要ないです。
ImageViewにGifをセット
実際にGifをImageViewにセットします。
//ローカルのGif画像を使う場合 ImageView matchImage = findViewById(R.id.image_view); GlideDrawableImageViewTarget target = new GlideDrawableImageViewTarget(matchImage); Glide.with(context).load(R.raw.gif).into(target); //インターネットのGif画像を使う場合 ImageView matchImage = findViewById(R.id.image_view); String gifUrl = "https://~~~.gif"; Glide.with(this).load(gifUrl).into(matchImage);
連続再生問題
このGlideライブラリでは標準でGifが無限再生されるようになっています。
もしこれを止めたい場合は以下のように変更してください。
ImageView matchImage = findViewById(R.id.image_view);
//matchImageの次に繰り返し数を指定
GlideDrawableImageViewTarget target = new GlideDrawableImageViewTarget(matchImage,1);
Glide.with(context).load(R.raw.gif).into(target);
第2引数にはloop回数が入るので
回数指定したいのならこの数字を変更すればできます。
他にもGlideのlistenerにsetLoopCountを使う方法もありますが
この方法が最も可読性が高いのでおすすめです。