Android 中實現 GIF 圖片動畫

在 Android 中,ImageView 從 Android 9.0(API 級別 28) 開始原生支持 GIF 動畫,通過 AnimatedImageDrawable 類實現。在之前的版本中,ImageView 并不支持直接播放 GIF 動畫,只能顯示 GIF 的第一幀。

一、 Android 9.0(API 級別 28)及以上版本

在 Android 9.0(API 級別 28)及以上版本中使用 ImageView 實現播放 GIF 動畫。

	private lateinit var animateDrawable: AnimatedImageDrawable@SuppressLint("UseCompatLoadingForDrawables")@RequiresApi(Build.VERSION_CODES.P)fun startAnimate() {// 加載動畫圖片animateDrawable = resources.getDrawable(R.drawable.animate_icon, null) as AnimatedImageDrawable_binding.imageAnimate.setImageDrawable(animateDrawable)// 開啟動畫animateDrawable.start()}@RequiresApi(Build.VERSION_CODES.P)fun stopAnimate() {animateDrawable.stop()}

在布局文件中,只需使用普通的 ImageView 并設置 src 屬性即可。

	<ImageViewandroid:id="@+id/image_animate"android:layout_width="100dp"android:layout_height="100dp"android:src="@drawable/animate_icon"/>

二、在 Android 9.0 之前的版本中播放 GIF 動畫

在 Android 9.0 之前的版本中,可以使用第三方庫(如 Glide 或 Picasso)實現 GIF 圖片動畫。

1、第三方 Glide 庫(推薦)

通過使用 Glide 第三方庫,你可以輕松地實現復雜的 GIF 動畫效果,無需額外編寫代碼。

(1)添加依賴庫

    implementation("com.github.bumptech.glide:glide:4.16.0")annotationProcessor("com.github.bumptech.glide:compiler:4.16.0")

(2) 代碼中調用

	fun startAnimateByGlide() {Glide.with(context).asGif().load(R.drawable.animate_icon).into(_binding.imageAnimate)}

2、第三方 Picasso 庫 (不支持)

Picasso 本身并不支持 GIF 動畫的自動播放,只能加載 GIF 文件并顯示其第一幀。這是因為 Picasso 主要專注于靜態圖片的加載和緩存,對于 GIF 動畫的支持較為有限。如果你需要自動播放 GIF 動畫,建議使用 Glide。

    fun startAnimateByPicasso() {Picasso.get().load(R.drawable.animate_icon).into(_binding.imageAnimate)}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77846.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77846.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77846.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【c語言】指針進階

目錄 1.字符指針 2.指針數組 3.數組指針 3.1 數組指針的定義 3.2 數組指針的使用 4.數組參數&#xff0c;指針參數 4.1 一維數組傳參 4.2 二維數組傳參 4.3 一級指針傳參 4.4 二級指針傳參 5.函數指針 6.函數指針數組 6.1函數指針數組的定義 6.2 函數指針數組…

極狐GitLab 項目 API 的速率限制如何設置?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 項目 API 的速率限制 (BASIC SELF) 引入于 15.10 版本&#xff0c;功能標志為rate_limit_for_unauthenticated_projects_api_…

【xlog日志文件】怎么刪除里面包含某些字符串的行(使用excel)

將log日志,復制到單獨一行 B列&#xff08;可能一行很長&#xff0c;所以將整合后的放在A列&#xff09; 使用公式可以篩選出 包含某些字符串的行 為true&#xff0c;將這些行直接刪除 IF(COUNT(FIND("MediaMuxterThreadRussia",B2,1))>0,"包含",&quo…

STM32提高篇: CAN通訊

STM32提高篇: CAN通訊 一.CAN通訊介紹1.物理層2.協議層二.STM32CAN外設1.CAN控制器的3種工作模式2.CAN控制器的3種測試模式3.功能框圖三.CAN的寄存器介紹1.環回靜默模式測試2.雙擊互發測試四.CAN的HAL代碼解讀一.CAN通訊介紹 CAN(Controller Area Network 控制器局域網,簡稱…

Java寫數據結構:棧

1.概念&#xff1a; 一種特殊的線性表&#xff0c;其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一端稱為棧頂&#xff0c;另一端稱為棧底。棧中的數據元素遵守后進先出LIFO&#xff08;Last In First Out&#xff09;的原則。 壓棧&#xff1a;棧的插…

單頁面應用的特點,什么是路由,VueRouter的下載,安裝和使用,路由的封裝抽離,聲明式導航的介紹和使用

文章目錄 一.什么是單頁面應用?二.什么是路由?生活中的路由和Vue中的路由 三.VueRouter(重點)0.引出1.介紹2.下載與使用(5個基本步驟2個核心步驟)2.1 五個基本步驟2.2 兩個核心步驟 四.路由的封裝抽離五.聲明式導航1.導航鏈接特點一:能跳轉特點二:能高亮 2.兩個高亮類名2.1.區…

【C++】模板2.0

最近學習了一些模板的知識&#xff0c;速寫本博客作為學習筆記&#xff0c;若有興趣&#xff0c;歡迎垂閱讀&#xff01; 1.非類型模板參數 模板參數分類類型形參與非類型形參。 類型形參即&#xff1a;出現在模板參數列表中&#xff0c;跟在class或者typename之類的參數類型名…

目標檢測中的損失函數(二) | BIoU RIoU α-IoU

BIoU來自發表在2018年CVPR上的文章&#xff1a;《Improving Object Localization With Fitness NMS and Bounded IoU Loss》 論文針對現有目標檢測方法只關注“足夠好”的定位&#xff0c;而非“最優”的框&#xff0c;提出了一種考慮定位質量的NMS策略和BIoU loss。 這里不贅…

如何在 Amazon EC2 上部署 Java(Spring Boot 版)

讓我們學習如何將 Java Spring Boot Web 服務器部署到 Amazon EC2。每月只需 3 美元。 使用 Azure&#xff0c;您可能不知道要花費多少錢。 Spring Boot 項目示例 在本教程中&#xff0c;我們將重點介紹如何將 Java Spring Boot 服務器部署到 Amazon EC2&#xff0c;因此我們不…

Git常用命令分類匯總

Git常用命令分類匯總 一、基礎操作 初始化倉庫git init添加文件到暫存區git add file_name # 添加單個文件 git add . # 添加所有修改提交更改git commit -m "提交描述"查看倉庫狀態git status二、分支管理 創建/切換分支git branch branch_name …

mysql——基礎知識

關鍵字大小寫不敏感 查看表結構中的 desc describe 描述 降序中的 desc descend 1. 數據庫的操作 1. 創建數據庫 create database 數據庫名;為防止創建的數據庫重復 CREATE DATABASE IF NOT EXISTS 數據庫名;手動設置數據庫采用的字符集 character set 字符集名;chars…

Redis 哨兵與集群腦裂問題詳解及解決方案

Redis 哨兵與集群腦裂問題詳解及解決方案 本文將深入探討Redis在哨兵模式和集群模式下可能出現的腦裂問題&#xff0c;包括其發生場景、原因以及有效的解決策略。同時&#xff0c;我們還將提供相應的代碼示例和配置方案來幫助讀者理解和實施。 一、腦裂問題概述 腦裂&#x…

國內網絡設備廠商名單(List of Domestic Network Equipment Manufacturers)

國內網絡設備廠商名單 運維工程師必須廣泛熟悉國內外各大廠商的設備&#xff0c;深入掌握其應用場景、功能特點及優勢。這不僅有助于在故障排查時迅速定位問題&#xff0c;還能在系統設計、優化與升級中做出更合理的決策。對設備特性的精準把握&#xff0c;能夠顯著提升運維效…

2、SpringAI接入ChatGPT與微服務整合

2、SpringAI接入ChatGPT與微服務整合 小薛博客AI 大模型資料 1、SpringAI簡介 https://spring.io/projects/spring-ai Spring AI是一個人工智能工程的應用框架。其目標是將Spring生態系統的設計原則&#xff08;如可移植性和模塊化設計&#xff09;應用于人工智能領域&#…

基于ubuntu24.10安裝NACOS2.5.1的簡介

基于ubuntu24.10安裝NACOS2.5.1的簡介 官方網站地址&#xff1a; https://nacos.io 可訪問nacos站點 https://nacos.io/zh-cn/ 2025年04月記錄發布 V2.5.1 版本 一、環境預準備 64 bit JDK 1.8&#xff1b; sudo apt update sudo apt install openjdk-8-jdk sudo apt upda…

神經網絡:從基礎到應用,開啟智能時代的大門

在當今數字化時代&#xff0c;神經網絡已經成為人工智能領域最熱門的技術之一。從語音識別到圖像分類&#xff0c;從自然語言處理到自動駕駛&#xff0c;神經網絡的應用無處不在。它不僅改變了我們的生活方式&#xff0c;還為各個行業帶來了前所未有的變革。本文將帶你深入了解…

[k8s實戰]Containerd 1.7.2 離線安裝與配置全指南(生產級優化)

[k8s實戰]Containerd 1.7.2 離線安裝與配置全指南&#xff08;生產級優化&#xff09; 摘要&#xff1a;本文詳細講解在無外網環境下部署 Containerd 1.7.2 容器運行時的完整流程&#xff0c;涵蓋二進制包安裝、私有鏡像倉庫配置、Systemd服務集成等關鍵步驟&#xff0c;并提供…

【CPU】結合RISC-V CPU架構回答中斷系統的7個問題(個人草稿)

結合RISC-V CPU架構對中斷系統七個關鍵問題的詳細解析&#xff0c;按照由淺入深的結構進行說明&#xff1a; 一、中斷請求機制&#xff08;問題①&#xff09; 硬件基礎&#xff1a; RISC-V通過CLINT&#xff08;Core Local Interrupter&#xff09;和PLIC&#xff08;Platfor…

[密碼學實戰]國密算法面試題解析及應用

以下是密碼學領域常見的面試題及其詳細解析,涵蓋基礎理論、算法實現與應用場景,幫助系統化備戰技術面試 一、基礎概念類 1. 密碼學的主要目標是什么? 答案: 確保數據的機密性(加密防止竊聽)、完整性(哈希校驗防篡改)、認證性(數字簽名驗證身份)和不可否認性(簽名防…

Spring Boot 實現 Excel 導出功能(支持前端下載 + 文件流)

&#x1f9e0; 一、為什么用 EasyExcel&#xff1f; 在 Java 開發中&#xff0c;操作 Excel 的框架主要有&#xff1a; Apache POI&#xff08;經典但慢、內存占用大&#xff09; JXL&#xff08;老舊不維護&#xff09; Alibaba EasyExcel&#xff08;阿里出品&#xff0c;…