Android常用圖片載入庫介紹及對比

darryrzhong發表於2019-03-29

前言

圖片載入在 Android開發專案中是必不可少的,為了降低開發週期和難度,我們經常會選用一些圖片載入的開源庫,而Android發展到現在圖片載入開源庫也越來越多了,下面介紹幾種開發中主流的圖片載入框架&以及他們之間的對比優缺點。

Android主流圖片載入庫

介紹& 對比

1.Picasso

Picasso中文翻譯為'畢加索',由Square公司開源的一個適用於Android的強大影象下載和快取庫.

  • 功能介紹

  • 圖片的非同步載入(最基礎功能)

  • 使用最少的記憶體完成複雜的圖片轉換,轉換圖片以適合所顯示的ImageView,來減少記憶體消耗

  • 支援載入過程中和載入錯誤時顯示對應圖片

  • 在Adapter中的回收不在視野的ImageView和取消已經回收的ImageView下載程式

  • 支援載入多種資料來源 網路、本地、資源、Assets 等

  • 自動新增磁碟和記憶體二級快取功能

  • 支援優先順序處理

  • 支援飛航模式、併發執行緒數根據網路型別而變

Picasso 沒有實現本地快取功能,交給了 Square 的另外一個網路庫 okhttp 去實現,這樣的好處是可以通過請求 Response Header 中的 Cache-Control 及 Expired 控制圖片的過期時間。


  • 與其他開源庫對比

優點如下:

  • 使用簡單,程式碼簡潔
  • 與Square 公司的其他開源庫如 Retrofit 或者 OkHttp搭配使用相容性會更好些,佔用體積也會少些

缺點如下:

  • 功能較為簡單-圖片載入;
  • 效能(載入速度等等)較(Glide、Fresco)較差
  • 自身無實現“本地快取”

2.Glide

Glide是由Google開源的一個圖片載入庫,是一款快速高效的Android開源媒體管理和影象載入框架,它將媒體解碼,記憶體和磁碟快取以及資源池包裝成簡單易用的介面.

  • 功能介紹

  • 圖片的非同步載入(基礎功能)

  • 支援設定載入尺寸、設定載入中以及載入失敗圖片、設定載入動畫、設定圖文混排

  • 多樣式的媒體載入(設定縮圖支援:先載入縮圖 然後在載入全圖)

  • 支援設定磁碟快取策略、設定跳過記憶體快取、清理快取

  • 生命週期整合(然而還是有bug)

  • 與其他開源庫對比

優點如下:

  • 支援多樣化媒體載入 Glide 不僅是一個圖片快取,它支援 Gif、WebP、縮圖,甚至是 Video
  • 生命週期整合 通過設定繫結生命週期,我們可以更加高效的使用Glide提供的方式進行繫結,這樣可以更好的讓載入圖片的請求的生命週期動態管理起來(使用還是有bug)
  • 高效的快取策略 1.支援Memory和Disk圖片快取 2.Picasso 只會快取原始尺寸的圖片,而 Glide 快取的是多種規格,即 Glide 會根據你 ImageView 的大小來快取相應大小的圖片尺寸 3.記憶體開銷小,Glide 預設的 Bitmap 格式是 RGB_565 格式,而 Picasso 預設的是 ARGB_8888 格式,佔用記憶體要小一半

缺點如下:

  • 使用方法複雜,實現方法較多
  • 使用較Fresco簡單,但效能(載入速度 & 快取)卻比不上Fresco

3.Fresco

Fresco是由Facebook開源的用於管理影象及其使用記憶體的Android庫

  • 功能介紹
    image.png

具體功能請前往官方文件檢視

優點如下

  • 大大減少了OOM的發生,Facebook在底層使用了C++技術解決圖片快取問題
  • 使用簡單,幾乎全部功能都能在XML檔案中直接制定

缺點如下:

  • 用法變得更加複雜了
  • 依賴包更加大了(2-3M)
  • 底層設計C++等技術,原始碼閱讀更加困難

至此Android 中主流的三大圖片載入框架就介紹完畢了,感謝閱讀

歡迎關注作者darryrzhong,更多幹貨等你來拿喲.

請賞個小紅心!因為你的鼓勵是我寫作的最大動力!

更多精彩文章請關注

相關文章