Wyświetlaj animowane GIF-y

Animowane GIF-y ułatwiają komunikację i wyrażanie siebie, dodając do rozmów dynamiczny i zaangażowany element, który pozwala użytkownikom przekazywać emocje, reakcje i humor skuteczniej niż same statyczne obrazy czy tekst. Popularność GIF-ów w kulturze online sprawia, że ich integracja jest kluczowa za utrzymanie trafności i atrakcyjności dla użytkowników, którzy oczekują nowoczesnych funkcji funkcje multimedialne.

Wyświetlanie animowanego GIF-a za pomocą biblioteki ładowania obrazów

Biblioteki wczytywania obrazów wykonują za Ciebie wiele ciężkiej pracy, często dodając obsługę funkcji takich jak animowane GIF-y. Poniższy kod pokazuje, jak zaimplementować odtwarzanie animowanych GIF-ów za pomocą biblioteki do ładowania obrazów Coil:

Dodaj zależność cewki do pliku GIF:

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

Utwórz program wczytujący z obsługą GIF-ów, korzystając z platformy ImageDecoder dodanej w Androidzie 9 (poziom API 28) oraz GifDecoder firmy Coil, który zapewnia zgodność wsteczną:

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

Użyj klasy gifEnabledLoader w funkcji kompozycyjnej Coil AsyncImage:

AsyncImage(
    imageLoader = gifEnabledLoader,
    ...
)

Wyświetlaj animowane GIF-y na platformie Android

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

Android 9 lub nowszy (poziom interfejsu API 28) ma wbudowaną obsługę animowanych plików GIF. Dzięki biblioteki Accompanist, Jetpack Compose aby odtworzyć te animacje za pomocą kilku wierszy kodu.

Dodaj zależność z biblioteką towarzyszącą, aby obsługiwać malarzy z możliwością rysowania:

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

Utwórz metodę, która wczytuje animowany GIF do AnimatedImageDrawable za pomocą 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
}

Użyj klasy rememberDrawablePainter z parametrem AnimatedImageDrawable:

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

Obsługa plików GIF z klawiatur obrazkowych i innych treści multimedialnych

Animowane pliki GIF to popularne funkcje wielu klawiatur z Androidem, w tym: Gboard od Google. Obecnie zalecany sposób obsługi wszelkiego rodzaju naklejek i animacji, niezależnie od tego, czy pochodzą one z metody wprowadzania tekstu czy z innej aplikacji, to użycie OnReceiveContentListener.

Przeczytaj artykuł Otrzymywanie szczegółowych treści, aby dowiedzieć się więcej o obsłudze obsługiwanych formatów odbieranie animacji GIF i innych multimediów w aplikacji.