Glide
Glide 是 Google 員工的開(kāi)源項(xiàng)目般甲, Google I/O 上被推薦使用敲霍,一個(gè)高效俊马、開(kāi)源、Android設(shè)備上的媒體管理框架肩杈,它遵循BSD柴我、MIT以及Apache 2.0協(xié)議發(fā)布。Glide具有獲取扩然、解碼和展示視頻劇照艘儒、圖片、動(dòng)畫(huà)等功能,它還有靈活的API界睁,這些API使開(kāi)發(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荐绝、支持常見(jiàn)圖片格式 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è)置跳過(guò)內(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)畫(huà)
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)聽(tīng)請(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();//清理磁盤(pán)緩存 需要在子線程中執(zhí)行
Glide.get(this).clearMemory();//清理內(nèi)存緩存 ?可以在UI主線程中進(jìn)行