Android 原生 View.setBackgroundResource() 僅支援靜態圖片,無法直接播放 GIF 動畫。若需在按鈕、卡片或任意 View 背景呈現動態效果,需自行實作繪製邏輯。
繼承 View 並利用 Movie 類別解碼 GIF 幀,覆寫 onDraw() 定時重繪。
GifView extends View,建構子載入 GIF 資源(Movie.decodeStream())。Handler 或 ValueAnimator 觸發 invalidate() 循環更新幀。onDraw(Canvas) 中呼叫 movie.draw(canvas, x, y) 繪製當前幀。onDetachedFromWindow() 停止動畫,避免記憶體洩漏。完整實作可參考開源專案:Android GIF 播放 View 範例
Glide、Coil 等圖片載入庫支援的 GifDrawable 搭配 ImageView。LottieAnimationView 效能更佳。