Android圖片加載之Glide

Glide

Glide 是 Google 員工的開源項(xiàng)目, Google I/O 上被推薦使用,一個(gè)高效、開源、Android設(shè)備上的媒體管理框架,它遵循BSD、MIT以及Apache 2.0協(xié)議發(fā)布。Glide具有獲取、解碼和展示視頻劇照、圖片、動(dòng)畫等功能,它還有靈活的API,這些API使開發(fā)者能夠?qū)lide應(yīng)用在幾乎任何網(wǎng)絡(luò)協(xié)議棧里。創(chuàng)建Glide的主要目的有兩個(gè),一個(gè)是實(shí)現(xiàn)平滑的圖片列表滾動(dòng)效果,另一個(gè)是支持遠(yuǎn)程圖片的獲取、大小調(diào)整和展示。

Glide需要依賴Support Library v4

compile 'com.github.bumptech.glide:glide:3.5.2'

compile 'com.android.support:support-v4:22.0.0'

區(qū)別:

1、Glide更易用,因?yàn)镚lide的with方法不光接受Context,還接受Activity 和 Fragment,Context會(huì)自動(dòng)的從他們獲取。

2、同時(shí)將Activity/Fragment作為with()參數(shù)的好處是:圖片加載會(huì)和Activity/Fragment的生命周期保持一致,比如Paused狀態(tài)在暫停加載,在Resumed的時(shí)候又自動(dòng)重新加載。所以我建議傳參的時(shí)候傳遞Activity 和 Fragment給Glide,而不是Context。

特點(diǎn):

1、可配置度高,自適應(yīng)程度高

2、支持常見圖片格式 Jpg png gif webp

3、支持多種數(shù)據(jù)源 ?網(wǎng)絡(luò)、本地、資源、Assets 等

4、高效緩存策略 ? ?支持Memory和Disk圖片緩存 默認(rèn)Bitmap格式采用RGB_565內(nèi)存使用至少減少一半

5、生命周期集成 ? 根據(jù)Activity/Fragment生命周期自動(dòng)管理請(qǐng)求

6、高效處理Bitmap ?使用Bitmap Pool使Bitmap復(fù)用,主動(dòng)調(diào)用recycle回收需要回收的Bitmap,減小系統(tǒng)回收壓力

簡(jiǎn)單使用:

1、添加引用 build.gradle 中添加配置

compile 'com.github.bumptech.glide:glide:3.7.0'

2、設(shè)置綁定生命周期

Glide.with(Context context);// 綁定Context

Glide.with(Activity activity);// 綁定Activity

Glide.with(FragmentActivity activity);// 綁定FragmentActivity

Glide.with(Fragment fragment);// 綁定Fragment

3、簡(jiǎn)單的加載圖片實(shí)例

Glide.with(this).load(imageUrl).into(imageView);

4、設(shè)置加載中以及加載失敗圖片

Glide.with(this).load(imageUrl).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(imageView);

5、設(shè)置跳過內(nèi)存緩存

Glide.with(this).load(imageUrl).skipMemoryCache(true).into(imageView);

6、設(shè)置下載優(yōu)先級(jí)

Glide.with(this).load(imageUrl).priority(Priority.NORMAL).into(imageView);

7、設(shè)置緩存策略

Glide.with(this).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);

8、設(shè)置加載動(dòng)畫

Glide.with(this).load(imageUrl).animate(R.anim.item_alpha_in).into(imageView);

9、設(shè)置縮略圖支持

Glide.with(this).load(imageUrl).thumbnail(0.1f).into(imageView);

10、設(shè)置加載尺寸

Glide.with(this).load(imageUrl).override(800, 800).into(imageView);

11、設(shè)置動(dòng)態(tài)轉(zhuǎn)換

Glide.with(this).load(imageUrl).centerCrop().into(imageView);

12、設(shè)置要加載的內(nèi)容

Glide.with(this).load(imageUrl).centerCrop().into(new SimpleTarget() {

@Override

public void onResourceReady(GlideDrawable resource, GlideAnimation glideAnimation) {

imageView.setImageDrawable(resource);

}

});

13、設(shè)置監(jiān)聽請(qǐng)求接口

14、設(shè)置動(dòng)態(tài)GIF加載方式

Glide.with(this).load(imageUrl).asBitmap().into(imageView);//顯示gif靜態(tài)圖片

Glide.with(this).load(imageUrl).asGif().into(imageView);//顯示gif動(dòng)態(tài)圖片

15、緩存的動(dòng)態(tài)清理

Glide.get(this).clearDiskCache();//清理磁盤緩存 需要在子線程中執(zhí)行

Glide.get(this).clearMemory();//清理內(nèi)存緩存 ?可以在UI主線程中進(jìn)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容