前言
圖片載入在 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庫
- 功能介紹
具體功能請前往官方文件檢視
優點如下
- 大大減少了OOM的發生,Facebook在底層使用了C++技術解決圖片快取問題
- 使用簡單,幾乎全部功能都能在XML檔案中直接制定
缺點如下:
- 用法變得更加複雜了
- 依賴包更加大了(2-3M)
- 底層設計C++等技術,原始碼閱讀更加困難
至此Android 中主流的三大圖片載入框架就介紹完畢了,感謝閱讀
歡迎關注作者darryrzhong,更多幹貨等你來拿喲.
請賞個小紅心!因為你的鼓勵是我寫作的最大動力!
更多精彩文章請關注