Android經常使用圖片加載庫介紹及對比

前言

圖片加載在 Android開發項目中是必不可少的,爲了下降開發週期和難度,咱們常常會選用一些圖片加載的開源庫,而Android發展到如今圖片加載開源庫也愈來愈多了,下面介紹幾種開發中主流的圖片加載框架&以及他們之間的對比優缺點。html

Android主流圖片加載庫

介紹& 對比

1.Picasso

Picasso中文翻譯爲'畢加索',由Square公司開源的一個適用於Android的強大圖像下載和緩存庫.git

  • 功能介紹github

  • 圖片的異步加載(最基礎功能)segmentfault

  • 使用最少的內存完成複雜的圖片轉換,轉換圖片以適合所顯示的ImageView,來減小內存消耗緩存

  • 支持加載過程當中和加載錯誤時顯示對應圖片網絡

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

  • 支持加載多種數據源 網絡、本地、資源、Assets 等框架

  • 自動添加磁盤和內存二級緩存功能異步

  • 支持優先級處理ide

  • 支持飛行模式、併發線程數根據網絡類型而變

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,更多幹貨等你來拿喲.

請賞個小紅心!由於你的鼓勵是我寫做的最大動力!

更多精彩文章請關注

相關文章
相關標籤/搜索