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)行