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

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

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

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

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

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

追加された ImageDecoder プラットフォームの両方を使用して、GIF 対応ローダを作成します。 を補完し、下位互換性を保つために Coil の GifDecoder を追加しました。

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 ファイルは、次のような多くの Android キーボードで一般的な機能です。 Google の Gboard をご活用ください。現在推奨される方法は ステッカーやアニメーションが、インプット メソッドに由来するものか、別のもの由来のものか OnReceiveContentListener を使用することです。

サポートを実装する方法について詳しくは、リッチ コンテンツの受信をご覧ください。 アプリで GIF アニメーションやその他のリッチメディアを受信する場合。