アニメーション GIF を表示する

アニメーション GIF はコミュニケーションと自己表現を強化し、 会話に魅力的な要素を配置して、ユーザーが感情を表現できるようにします。 リアクション、ユーモアを、静止画像やテキストだけより効果的に使用できます。 オンライン カルチャーで GIF が人気を集めているため、最新の機能と豊富なマルチメディア エクスペリエンスを期待するユーザーに関連性と魅力を維持するには、GIF を統合することが不可欠です。

画像読み込みライブラリを使用してアニメーション GIF を表示する

画像読み込みライブラリは、複雑な処理の多くを処理し、 下位互換性のあるサポートも組み込まれています。次の 次のコードは、 Coil 画像読み込みライブラリ:

GIF の Coil 依存関係を追加します。

implementation("io.coil-kt:coil-gif:2.6.0")

Android 9(API レベル 28)で追加されたプラットフォームの ImageDecoder と、下位互換性を確保するための Coil の GifDecoder の両方を使用して、GIF 対応ローダを作成します。

val gifEnabledLoader = ImageLoader.Builder(this)
    .components {
        if ( SDK_INT >= 28 ) {
            add(ImageDecoderDecoder.Factory())
        } else {
            add(GifDecoder.Factory())
        }
    }.build()

Coil AsyncImage コンポーザブルで gifEnabledLoader を使用します。

AsyncImage(
    imageLoader = gifEnabledLoader,
    ...
)

Android プラットフォームのサポートを使用してアニメーション GIF を表示する

AsyncImage(
     model = request,
     imageLoader = videoEnabledLoader,
     contentDescription = null
 )

Android 9 以降(API レベル 28)には、アニメーション GIF ファイルのサポートが組み込まれています。 Accompanist ライブラリを利用すれば、Jetpack Compose で これらのアニメーションをわずか数行のコードで再生できます。

描画可能ペインターをサポートするために、Accompanist ライブラリの依存関係を追加しました。

implementation("com.google.accompanist:accompanist-drawablepainter:0.35.0-alpha")

ImageDecoder を使用して、アニメーション GIF を AnimatedImageDrawable に読み込むメソッドを作成します。

private fun createAnimatedImageDrawableFromImageDecoder(context: Context, uri: Uri): AnimatedImageDrawable {
    val source = ImageDecoder.createSource(context.contentResolver, uri)
    val drawable = ImageDecoder.decodeDrawable(source)
    return drawable as AnimatedImageDrawable
}

rememberDrawablePainter AnimatedImageDrawable:

Image(
    painter = rememberDrawablePainter(
        drawable = createAnimatedImageDrawableFromImageDecoder(applicationContext, mediaUri)),
     contentDescription = "animated gif"
)

画像キーボードやその他のリッチ コンテンツの GIF ファイルをサポート

アニメーション GIF ファイルは、Google の Gboard など、多くの Android キーボードで人気のある機能です。入力方法からのものでも、別のアプリからのものでも、あらゆる種類のステッカーやアニメーションをサポートするには、現在 OnReceiveContentListener を使用することをおすすめします。

GIF アニメーションなどのリッチ メディアの受信をアプリでサポートする方法については、リッチ コンテンツを受信するをご覧ください。