使用图片加载库显示动画 GIF

2026-01-02 22:13:24
GIF 动画可以增强沟通和自我表达能力,为对话添加动态且富有吸引力的元素,让用户能够比单独使用静态图片或文字更有效地传达情感、回应和...

GIF 动画可以增强沟通和自我表达能力,为对话添加动态且富有吸引力的元素,让用户能够比单独使用静态图片或文字更有效地传达情感、回应和幽默。GIF 在网络文化中很受欢迎,因此其整合必不可少

保持相关性并吸引那些期望现代功能和

丰富的多媒体体验

使用图片加载库显示动画 GIF

图片加载库可以为您完成许多繁重工作,通常会为 GIF 动画等功能添加向后兼容的支持。以下

代码演示了如何使用

Coil 图片加载库:

为 GIF 添加 Coil 依赖项:

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

使用已添加的平台 ImageDecoder 创建支持 GIF 的加载器

Android 9(API 级别 28)中)以及 Coil 的 GifDecoder,以实现向后兼容:

val gifEnabledLoader = ImageLoader.Builder(this)

.components {

if ( SDK_INT >= 28 ) {

add(ImageDecoderDecoder.Factory())

} else {

add(GifDecoder.Factory())

}

}.build()

在 Coil AsyncImage 可组合项中使用 gifEnabledLoader:

AsyncImage(

imageLoader = gifEnabledLoader,

...

)

使用 Android 平台支持显示动画 GIF

AsyncImage(

model = request,

imageLoader = videoEnabledLoader,

contentDescription = null

)

Android 9 及更高版本(API 级别 28)内置了对动画 GIF 文件的支持。使用

Accompanist 库的帮助下,Jetpack Compose 可以

只需几行代码即可播放这些动画。

添加 Accompanist 库依赖项以支持可绘制对象 Painter:

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 键盘的热门功能,包括

Google 推出的 Gboard。目前,建议使用 OnReceiveContentListener 来支持任何类型的贴纸或动画(无论是来自输入法还是来自其他应用)。

请参阅接收富媒体内容,详细了解如何实现对

在您的应用中接收 GIF 动画和其他富媒体。