Afficher des GIF animés

Les GIF animés améliorent la communication et l’expression personnelle, en ajoutant une image dynamique et un élément engageant aux conversations qui permet aux utilisateurs de transmettre des émotions, des réactions et de l'humour plus efficacement que des images statiques ou du texte seuls. La popularité des GIF dans la culture en ligne rend leur intégration essentielle afin de rester pertinent et attrayant pour les utilisateurs qui s'attendent à des fonctionnalités modernes et une expérience multimédia riche.

Afficher un GIF animé à l'aide d'une bibliothèque de chargement d'images

Les bibliothèques de chargement d'images font le gros du travail à votre place, en ajoutant souvent la compatibilité rétrocompatible avec des fonctionnalités telles que les GIF animés ; Les éléments suivants : montre comment implémenter la lecture de GIF animés à l'aide de la méthode Bibliothèque de chargement d'images Coil:

Ajoutez la dépendance Coil pour le GIF:

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

Créez le chargeur compatible avec les GIF à l'aide de la plate-forme ImageDecoder, ajoutée sous Android 9 (niveau d'API 28), ainsi que le GifDecoder de Coil pour assurer la rétrocompatibilité:

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

Utilisez gifEnabledLoader dans votre composable Coil AsyncImage:

AsyncImage(
    imageLoader = gifEnabledLoader,
    ...
)

Afficher un GIF animé à l'aide de la compatibilité de la plate-forme Android

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

Android 9 et versions ultérieures (niveau d'API 28) sont compatibles avec les fichiers GIF animés. Avec un d'une bibliothèque Accompanist, Jetpack Compose peut lire ces animations avec seulement quelques lignes de code.

Ajoutez la dépendance de la bibliothèque Accompanist pour prendre en charge les drawables:

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

Créez une méthode qui charge le GIF animé dans un AnimatedImageDrawable à l'aide de ImageDecoder:

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

Utiliser rememberDrawablePainter avec la AnimatedImageDrawable:

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

Compatibilité avec les fichiers GIF provenant de claviers image et d'autres contenus enrichis

Les fichiers GIF animés sont des fonctionnalités populaires dans de nombreux claviers Android, notamment Gboard de Google. La méthode recommandée actuellement pour prendre en charge tout type d'autocollant ou d'animation, qu'il s'agisse d'un mode de saisie ou d'une autre application, consiste à utiliser un OnReceiveContentListener.

Consultez Recevoir du contenu enrichi pour en savoir plus sur la prise en charge de recevoir des animations GIF et d'autres éléments rich media dans votre application.