Glide入門教程——6.播放Gif & 視頻

Glide — 播放Gif & 視頻

原文:Displaying Gifs & Videos
作者:Norman Peitek
翻譯:Dexter0218

在前面的文章中,我們一起學習了從各種源加載圖片,一起學習了如何改變圖片大小和縮放等設置。這篇文章會展示給你一個Glide的特性:播放Gif和本地視頻。

Glide 系列概覽

  1. 入門簡介
  2. 高級加載
  3. 適配器(ListView, GridView)
  4. 占位圖& 淡入淡出動畫
  5. 圖片大小 & 縮放
  6. 播放GIF & 視頻
  7. 緩存基礎
  8. 請求優(yōu)先級
  9. 縮略圖
  10. 回調:定制view中使用SimpleTarget和ViewTarget
  11. 通知欄和桌面小控件的圖片加載
  12. 異常: 調試和報錯處理
  13. 自定義變換
  14. 用animate()定制動畫
  15. 整合網絡協(xié)議棧
  16. 用Modules定制Glide
  17. Glide Module 案例: 接受自簽名HTTPS證書
  18. Glide Module 案例: 自定義緩存
  19. Glide Module 案例: 通過加載自定義大小圖片優(yōu)化
  20. 動態(tài)使用 Model Loaders
  21. 如何旋轉圖片
  22. 系列綜述

播放 Gif動畫

許多圖片加載庫能處理好圖片的加載與顯示,但很多并不支持Gif。如果你的app需要支持Gif,Glide的簡單會讓體驗更驚艷。如果你想要播放Gif,你只要使用之前處理圖片的類似的方法:

String gifUrl = "http://i.kinja-img.com/gawker-media/image/upload/s--B7tUiM5l--/gf2r69yorbdesguga10i.gif";

Glide  
    .with( context )
    .load( gifUrl )
    .into( imageViewGif );

上面的代碼會在ImageView里顯示Gif,并自動播放。Glide另外一個非常棒的功能是你仍然可以使用標準的調用去處理Gif。

Glide  
    .with( context )
    .load( gifUrl )
    .placeholder( R.drawable.cupcake )
    .error( R.drawable.full_cake )
    .into( imageViewGif );

Gif 檢查

Glide接受Gif和圖片作為load()的參數。上面代碼中潛在的一個問題,如果提供的源不是Gif,可能是一個普通的圖片。作為開發(fā)者,你當然希望那個URL是一個Gif,但Glide不能自動檢測到底是不是,這樣引入了一個額外的方法asGif()強迫生成一個Gif:
Glide
.with( context )
.load( gifUrl )
.asGif()
.error( R.drawable.full_cake )
.into( imageViewGif );

如果gifUrl是一個gif,沒有異常發(fā)生。但如果gifUrl不是一個Gif,即使是一個完好的圖片(非Gif),Glide也會加載失敗。.error()回調方法會被調用,并加載錯誤占位圖。

把Gif當作Bitmap播放

如果你的app需要顯示一組網絡URL,可能包括普通的圖片或者Gif。在一些情況下,你可能并不在意是否要播放完整的Gif。如果你只是想要顯示Gif的第一幀,當URl指向的的確是Gif,你可以調用asBitmap()將其作為常規(guī)圖片顯示。

Glide  
    .with( context )
    .load( gifUrl )
    .asBitmap()
    .into( imageViewGifAsBitmap );

這邊介紹了用Glide所有的知識點去播放Gif,非常簡單,試試吧!

注意事項 ——譯者注##

實際中加載gif并沒有上述的那么簡單,可能會遇到很多問題:
比如加載慢,比如OOM。
1.git圖片大小,圖片格式是否正確,你可以查看下你需要加載的gif圖片大小,需要多長時間。太大的圖片,加載慢,又浪費流量,不利于用戶體驗。
2.網速是不是正常?從chrome里加載一下,看需要多長時間。
3.磁盤緩存策略問題。加載gif,就磁盤緩存還能設置全局緩存么?壓縮調整gif大小,重新編碼,是不是很消耗時間?官方給的方法是使用用:.diskCacheStrategy(DiskCacheStrategy.SOURCE)
4.在ListView等列表控件中滑動的時候,考慮添加 Glide.with(context).pause|resumeRequests() ,可以參考github上的開發(fā)者答復
5.開啟Glide的相關log,查看異常原因,具體問題具體分析。不會開啟的,請閱讀 異常: 調試和報錯處理。
6.還不能解決,再訪問https://github.com/bumptech/glide,看一下里面的issue,搜索一下跟你代碼相關的關鍵字。

播放本地視頻

介紹完Gif,下面介紹一下播放視頻。Glide也能播放存儲在手機上的本地視頻。假設你能通過用戶選擇獲取到視頻文件的路徑:

String filePath = "/storage/emulated/0/Pictures/example_video.mp4";

Glide  
    .with( context )
    .load( Uri.fromFile( new File( filePath ) ) )
    .into( imageViewGifAsBitmap );

重要提示:這里只對本地視頻有效。對于并非存在本地的視頻(如網絡URL)并不支持!如果你想要從網絡URL播放視頻,參考VideoView。

展望

看完了這篇文章,你應當能夠和處理圖片一樣,處理Gif和本地視頻了。Glide可以讓Gif的播放非常流暢和方便。后續(xù)的文章將要為你介紹Glide的緩存系統(tǒng)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容