GIF 動畫可以促進溝通和自我表達,為觀眾提供生動活潑的

透過引人入勝的元素傳達情緒

也會更有效率地回應及幽默影片,甚至比單獨使用靜態圖片或文字更有效。

GIF 在網路文化中相當受歡迎,因此整合 GIF 是維持相關性和吸引力的重要關鍵,可滿足期待現代化功能和豐富多媒體體驗的使用者。

使用圖片載入程式庫來顯示 GIF 動畫

圖片載入程式庫可代您處理大部分的繁瑣作業,通常會為動畫 GIF 等功能新增回溯相容性支援。以下程式碼示範如何使用 Coil 圖片載入程式庫實作 GIF 動畫播放功能:

為 GIF 新增 Coil 依附元件:

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

使用我們新增的平台 ImageDecoder 建立支援 GIF 的載入器 (已新增

,以及 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 程式庫依附元件,以支援可繪製的繪圖器:

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

使用 ImageDecoder 建立方法,將 GIF 動畫載入AnimatedImageDrawable:

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 動畫和其他互動式多媒體。