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