Android 載入GIF圖最佳實踐

来源:http://www.cnblogs.com/zhaoyanjun/archive/2017/08/21/7402842.html
-Advertisement-
Play Games

轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/75578109 本文出自 "【趙彥軍的博客】" 起因 最近在項目中遇到需要在界面上顯示一個本地的 GIF 圖。按照慣例我直接用了 Glide 框架來實現。 Glide 地址: http ...


轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/75578109
本文出自【趙彥軍的博客】

起因

最近在項目中遇到需要在界面上顯示一個本地的 GIF 圖。按照慣例我直接用了 Glide 框架來實現。

Glide 地址: https://github.com/bumptech/glide

我用的 Glide版本為 4.0.0-RC1 , 具體的實現代碼如下:

 Glide.with( this ).asGif().load( R.drawable.yiba_location ).into( location_image ) ;

運行的效果很卡頓,我懷疑是不是方法沒有用對,調了壓縮模式,還是卡頓;調了緩存模式,還是卡頓。看了一下我的 gif 圖,大小還是 800K ,是不是圖片太大了,換了一張 100K 的 gif 圖,這次顯示的效果很好,gif 圖播放的很流暢。至此,得出結論:Glide 框架自身的原因,播放大尺寸的 Gif 圖的效果不是很理想。

方案

Glide 不行,那麼就要另想其他方案,就去 github 上找一下。

這裡寫圖片描述

排名第一的 android-gif-drawable 庫 start 有 4.8K , 這個應該不錯,試試吧。

android-gif-drawable : https://github.com/koral--/android-gif-drawable

引用:

 compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.7'

直接把佈局文件中的 ImageView 替換為 GifImageView

<pl.droidsonroids.gif.GifImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/yiba_location "
    />

運行起來看看,果然很好啊,播放的很流暢,果斷採用此方案。

探尋其他的屬性:

GifImageView gifImageView = (GifImageView) findViewById(R.id.gifImageView);

GifDrawable gifDrawable = (GifDrawable) gifImageView.getDrawable();

通過 GifImageView 對象獲取到 GifDrawable 對象。

gifDrawable.start(); //開始播放
 
gifDrawable.stop(); //停止播放

gifDrawable.reset();  //複位,重新開始播放

gifDrawable.isRunning(); //是否正在播放

gifDrawable.setLoopCount( 2 ); //設置播放的次數,播放完了就自動停止

gifDrawable.getCurrentLoop(); //獲取正在播放的次數

gifDrawable.getCurrentPosition ; //獲取現在到從開始播放所經歷的時間

gifDrawable.getDuration() ; //獲取播放一次所需要的時間

個人微信號:zhaoyanjun125 , 歡迎關註


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • var canvas = $("#gameCanvas"); var context = canvas.get(0).getContext("2d"); //畫布尺寸 var canvasWidth = canvas.width(); var canvasHeight = canvas.height... ...
  • ListView實現簡單列表 效果圖: 啥也沒乾的ListView張這樣: fry.Activity01 /ListView/res/layout/activity01.xml ...
  • ViewPager實現引導頁 廢話就不多說了,直接上效果圖和代碼 fry.Activity01 fry.ImagePagerAdapter /viewPager/res/layout/activity01.xml 1、多個控制項(這裡指小圓點)可以用List來一起訪問 2、可用動態的控制項設置tag來區 ...
  • (c)hele 一、基本情況 (一)開發工具改版 在我的上篇博客里,工程構建還是Eclipse模式,但是這篇博客寫出來時工程已經改為Android Studio模式,主要是Gradle工具的應用,特別是第三方庫的引用,不用將庫放進libs文件夾下,只需要進行Gradle依賴配置,十分方便。 (二)內 ...
  • Windows下的Android遠程桌面助手(Android Remote Displayer and Controller),增加了輸入法的快速切換功能,支持通過Google拼音輸入法在PC端快速輸入中文,支持通過ARDC輸入法複製粘貼文本到Android端。 ...
  • 歡迎各位同學加入: React-Native群:397885169 大前端群:544587175 大神超多,熱情無私幫助解決各種問題。 最近項目需求需要用到輪播圖,所以寫兩Demo練練手,不過效果不太理想,希望大牛予以指正。 不多說,先上圖。 這種輪播很常見,但是一個問題是,總感覺有點卡的感覺,最氣 ...
  • 說明: ^.*[\u4e00-\u9fa5].*$ 是否包含中文^[\u4E00-\u9FA5]+$ 是否全中文 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range repla ...
  • 轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/76165252 本文出自 "【趙彥軍的博客】" 一:什麼是路由? 說簡單點就是映射頁面跳轉關係的,當然它也包含跳轉相關的一切功能。 二:為什麼需要路由 Android系統已經給我們提供 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...