Fresco、Glide、Picasso的比較

weixin_34290000發表於2016-11-25

昨天去面試,談到了幾個圖片載入框架。Fresco;Glide;Picasso
面試官問起了那個框架更好一點,我說Glide吧,並說了幾個在之前專案中實際應用的例子,和glide的一些原理。闡述了一下我的觀點。
回到家總覺得是沒有完全的闡述好我的觀點,也是因為我沒看過Fresco和Picasso的原始碼,只留心過glide的原理。因為水平有限,分析三個框架的原始碼不太現實,我覺得還是要拿出資料來證明(碰巧最近待業在家)。

載入資源:
每一種框架都分別嘗試了2種圖片
第一張圖是501x428、找了一個平時專案中較平均的解析度吧
http://www.youxiping.com/data/attachment/portal/201509/11/144756yp966fkf07173v4z.jpg
第二張圖是1440*2560、整一個大一點的圖片載入試試看吧
http://bizhi.cnanzhi.com/upload/bizhi/2014/1202/14175104904742.jpg

1、先說Fresco

配置按照官方的教程,姑且稱之為0配置吧:

public class MyApplication extends Application {@Override public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}
    <com.facebook.drawee.view.SimpleDraweeView
        android:layout_centerInParent="true"
        android:id="@+id/my_image_view"
        android:layout_width="130dp"
        android:layout_height="130dp"
        />
imageView.setImageURI("xxxx");

這是載入圖片的例子
載入第一張圖片時看一下記憶體的使用率

1285832-a293cd203d8665c0.png
Paste_Image.png

比較大解析度的圖片

1285832-446b23a2bbc8a8a0.png
Paste_Image.png

2、Glide

glide 的使用相對來說更為簡單

Glide
.with(this)
.load("http://www.youxiping.com/data/attachment/portal/201509/11/144756yp966fkf07173v4z.jpg")
.into(imageView);
1285832-a504f70899a98051.png
Paste_Image.png
1285832-60a00870fbdbceeb.png
Paste_Image.png

3、Picasso

就使用上來講,Picasso和Glide差別很小了

Picasso
.with(this)
.load("http://www.youxiping.com/data/attachment/portal/201509/11/144756yp966fkf07173v4z.jpg")
.into(imageView);
1285832-fd848b20ff195071.png
Paste_Image.png

1285832-b3e2953866c9065e.png
Paste_Image.png

3、最後看下依賴包大小

1285832-f93912fe7a5dfee9.png
Paste_Image.png
1285832-467fdcaf90b2511c.png
Paste_Image.png
1285832-7f9007b39b2a0f55.png
Paste_Image.png

相關文章