Отображать анимированные GIF-файлы

Анимированные GIF-файлы улучшают общение и самовыражение, добавляя в разговоры динамичный и увлекательный элемент, который позволяет пользователям передавать эмоции, реакции и юмор более эффективно, чем просто статические изображения или текст. Популярность GIF-файлов в онлайн-культуре делает их интеграцию необходимой для сохранения актуальности и привлекательности для пользователей, которые ожидают современных функций и богатых мультимедийных возможностей.

Отобразите анимированный GIF-файл с помощью библиотеки загрузки изображений.

Библиотеки загрузки изображений делают за вас большую часть тяжелой работы, часто добавляя обратно совместимую поддержку таких функций, как анимированные GIF-файлы. Следующий код демонстрирует, как реализовать воспроизведение анимированных GIF-файлов с помощью библиотеки загрузки изображений Coil :

Добавьте зависимость Coil для GIF:

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

Создайте загрузчик с поддержкой GIF , используя платформу ImageDecoder, добавленную в Android 9 (уровень API 28), а также GifDecoder Coil для обратной совместимости:

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

Используйте gifEnabledLoader в компоновочном файле Coil AsyncImage:

AsyncImage(
    imageLoader = gifEnabledLoader,
    ...
)

Отображение анимированного GIF-изображения с помощью поддержки платформы Android.

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

Android 9+ (уровень API 28) имеет встроенную поддержку анимированных файлов GIF. С небольшой помощью библиотеки Accompanist Jetpack Compose может воспроизводить эти анимации с помощью всего лишь нескольких строк кода.

Добавьте зависимость библиотеки Аккомпаниатора для поддержки рисующих художников:

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

Создайте метод, который загружает анимированный GIF в AnimatedImageDrawable с помощью 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
}

Используйте RememberDrawablePainter с AnimatedImageDrawable :

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

Поддержка файлов GIF с графических клавиатур и другого богатого контента.

Анимированные файлы GIF — популярная функция многих клавиатур Android, включая Gboard от Google. Текущий рекомендуемый способ поддержки любого типа стикера или анимации, независимо от того, исходят ли они из метода ввода или из другого приложения, — использовать OnReceiveContentListener .

См. раздел Получение мультимедийного контента , чтобы узнать больше о том, как реализовать поддержку получения GIF-анимации и других мультимедийных материалов в вашем приложении.