Отображать анимированные 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 и других мультимедийных материалов в вашем приложении.