1. 程式人生 > >Glide和Picasso的比較

Glide和Picasso的比較

Glide 和 Picasso 可以說是目前 Android 上最流行的圖片載入庫了。大部分安卓應用開發人員都有使用過這兩個庫在他們的開發工作中。這兩個庫也都確實提供了大量圖片載入的功能,而且也都經過了很多應用的檢驗,是可靠可信的。表面看上去似乎兩者工作原理很相似,但是實際上是有著很大差別的,主要體現在下面幾個方面:

  • 下載圖片的方式
  • 圖片的快取機制
  • 載入到記憶體的機制

本文主要會圍繞這幾個方面來深入研究和對比兩個庫的差異,從而給開發者們提供參考。 對比的版本是 Glide v3.7.0 和 Picasso v2.5.2 的版本。

匯入庫到專案中

Picasso 和 Glide 都在 Jcenter 上有建立庫,所以只需要簡單的在新增dependency 即可

Picasso

dependencies {
    compile 'com.squareup.picasso:picasso:2.5.1'
}

Glide

dependencies {
    compile 'com.github.bumptech.glide:glide:3.5.2'
}

相同

1.兩個庫也都支援快取圖片,都通過下載圖片後,快取到本地。

區別

 1.   with值

Picasso.with()  ------->Context context

Gilde.with( )------>  Context context    Activity activity    FragmentActivity activity   Fragment fragment

2.  圖片質量

Picasso   預設ARGB-8888格式

Glide     預設的Bitmap格式為RGB-565

3.  載入GIT圖

Glide動畫會消耗太多的記憶體

4.  快取策略和載入速度

Picasso     下載圖片然後快取完整的大小到本地,

Glide        Glide 是會先下載圖片,然後改變圖片的大小,以適應 imageView 的要求,然後快取到本地

快取策略

(將ImageView調整成不同的大小,不管大小如何Picasso值快取一個尺寸,Glide會為每個ImageView快取一次)

(Glide讓載入非常快 Picasso 因為需要在顯示之前調整大小而又延遲)

5.  載入圖片的時間

當嘗試載入一個圖片的時候,兩個庫都會採用先從快取中讀取,如果快取中沒有,再去下載的做法。

··········1.當載入因為Picasso 是直接把圖載入到記憶體中,而 Glide 則需要改變圖片大小再載入到記憶體中去。這個應該是會耗費一定的時間。

··········2.載入圖片從記憶體中的時候,Glide比Picasso快 原理是因為快取機制的區別,Picasso從快取中拿到圖片先去resize後設定給imageview 但是Glide不需要這樣

6. 庫的大小和方法的數量

Glide是Picasso的3.5倍   Glide有2678個     Picasso有849個

7.使用方式

如果只是簡單的從一個 URL 中下載圖片,然後顯示到 imageView 中,那麼兩個庫的使用方式基本相似,也都非常的簡單。同時兩個庫也都支援動畫和大小的剪下,也可以設定載入時候的預設圖片等功能: Picasso:

Picasso.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);

Glide:

Glide.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.crossFade()
.into(myImageView);

8.其他功能的對比

  • GIF 支援:Glide 支援 GIF。 對於載入 GIF 來說,Glide 只需要簡單使用 Glide.with(...).load(...)。 但是 Picasso 是不支援的,因此如果你的應用中是需要載入 GIF 的話,那就只能用 Glide 了。

  • 靈活性:Glide 提供了非常多的配置,你可以非常靈活的根據你的需求來客製化,從而縮減 Glide 庫的大小等。

總結

正所謂人無完人,經過一番對比,Picasso 和 Glide 各有千秋,那麼到底我們應該用哪個庫呢?這個還是回到應用的需求來看,比如你想要你的 app 小一些,沒有那麼多的額外功能,那麼 Picasso 是你的首選。反之,比如你的應用中需要載入 GIF,或者對於記憶體的大小比較在意,那麼 Glide 應該是不錯的選擇。

1. Glide比Picasso載入速度快,但Glide比Picasso需要更大的空間來快取

2.Glide載入影象及磁碟快取的方式都優於Picasso,且Glide更有利於減少OitOfMemoryError的發生

3.GIF動畫是Glide的殺手鐗