Mostra GIF animate

Le GIF animate migliorano la comunicazione e l'espressione personale, aggiungendo un elemento dinamico e elementi coinvolgenti nelle conversazioni che consentono agli utenti di trasmettere emozioni, reazioni e umorismo in modo più efficace rispetto alle immagini statiche o al solo testo. La popolarità delle GIF nella cultura online rende essenziale la loro integrazione per essere pertinenti e accattivanti per gli utenti che si aspettano funzionalità moderne e ricca di contenuti multimediali.

Visualizza una GIF animata usando una libreria di caricamento immagini

Le librerie per il caricamento delle immagini svolgono gran parte del lavoro pesante, spesso aggiungendo supporto compatibile con le versioni precedenti di funzionalità quali GIF animate. Le seguenti il codice illustra come implementare la riproduzione di GIF animate utilizzando il Libreria per il caricamento delle immagini Coil:

Aggiungi la dipendenza Coil per la GIF:

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

Crea il caricatore compatibile con le GIF utilizzando sia ImageDecoder della piattaforma, aggiunto in Android 9 (livello API 28), sia GifDecoder di Coil per la compatibilità con le versioni precedenti:

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

Utilizza gifEnabledLoader nel composable AsyncImage di Coil:

AsyncImage(
    imageLoader = gifEnabledLoader,
    ...
)

Visualizza una GIF animata utilizzando il supporto della piattaforma Android

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

Android 9 e versioni successive (livello API 28) dispone del supporto integrato per i file GIF animati. Con un un piccolo aiuto da una libreria accompagnati, Jetpack Compose può riprodurre queste animazioni con poche righe di codice.

Aggiungi la dipendenza della libreria accompagnatore per supportare i disegnabili pittori:

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

Crea un metodo che carichi la GIF animata in un AnimatedImageDrawable utilizzando 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
}

Utilizza rememberDrawablePainter con la classe AnimatedImageDrawable:

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

Supporta file GIF da tastiere di immagini e altri contenuti avanzati

I file GIF animati sono funzionalità molto usate in molte tastiere Android, tra cui Gboard di Google. Al momento, il modo consigliato per supportare qualsiasi tipo di OnReceiveContentListener, che provenga dal metodo di immissione o da un'altra app, è utilizzare un'OnReceiveContentListener.

Consulta la sezione Ricevere contenuti avanzati per scoprire di più su come implementare l'assistenza per la ricezione di animazioni GIF e altri contenuti rich media nell'app.