Glide作為開(kāi)發(fā)常用的圖片加載庫(kù),有許多實(shí)用而且強(qiáng)大的功能,那么,今天就來(lái)總結(jié)一番,這次把比較常見(jiàn)的都寫(xiě)出來(lái),但并不是全部哦。
Glide和Picasso有90%的相似度,準(zhǔn)確的說(shuō),就是Picasso的克隆版本。但是在細(xì)節(jié)上還是有不少區(qū)別的。Glide的使用非常方便,而且使用了鏈?zhǔn)骄幊?,所以方法直接連接寫(xiě)在后便就可以了。
- 1:Glide的配置
compile 'com.github.bumptech.glide:glide:3.7.0'
- 2最簡(jiǎn)單的用法
異步加載圖片:
Glide.with(context).load(url).into(imageView);
這是最簡(jiǎn)單的用法了,with里填上下文,load里面填寫(xiě)url,into填寫(xiě)要下載到的控件上即可
- 3設(shè)置占位圖和錯(cuò)誤圖:
placeholder(R.drawable.user_placeholder)
error(R.drawable.user_placeholder_error)
4 load方法的使用
Glide基本可以load任何可以拿到的媒體資源,如:
load SD卡資源:load("file://"+Environment.getExternalStorageDirectory().getPath()+"/test.jpg")
load assets資源:load("file:///android_asset/f003.gif")
load raw資源:load("Android.resource://包名/raw/raw_1")
或load("android.resource://包名/raw/"+R.raw.raw_1)
load drawable資源:load("android.resource://包名/drawable/"+R.drawable.news)
load ContentProvider資源:load("content://media/external/images/media/139469")
load http資源:load("http://img.my.csdn.net/uploads/201508/05/1438760757_3588.jpg")
load https資源:load("https://img.alicdn.com/tps/TB1uyhoMpXXXXcLXVXXXXXXXXXX-476-538.jpg_240x5000q50.jpg_.webp")當(dāng)然,load不限于String類型,還可以:
load(Uri uri),
load(File file),
load(Integer resourceId),
load(URL url),
load(byte[] model),
load(T model),
loadFromMediaStore(Uri uri)。5設(shè)置緩存策略
diskCacheStrategy(DiskCacheStrategy.ALL)
可選策略:
DiskCacheStrategy.SOURCE:緩存原始數(shù)據(jù);
DiskCacheStrategy.RESULT:緩存變換(如縮放、裁剪等)后的資源數(shù)據(jù);
DiskCacheStrategy.NONE:什么都不緩存(不進(jìn)行磁盤緩存);
DiskCacheStrategy.ALL:緩存SOURC和RESULT;
默認(rèn)采用DiskCacheStrategy.RESULT策略;
對(duì)于download only操作要使用DiskCacheStrategy.SOURCE;6清空緩存
禁止內(nèi)存緩存:
.skipMemoryCache(true)
清除內(nèi)存緩存:
// 必須在UI線程中調(diào)用
Glide.get(context).clearMemory();
禁止磁盤緩存:
.diskCacheStrategy(DiskCacheStrategy.NONE)
清除磁盤緩存:
// 必須在后臺(tái)線程中調(diào)用,建議同時(shí)clearMemory()
Glide.get(applicationContext).clearDiskCache();
- 7設(shè)置請(qǐng)求優(yōu)先級(jí)
priority(Priority.HIGH)
優(yōu)先級(jí)越高越優(yōu)先加載,但不保證所有圖片都按序加載。可選參數(shù):
枚舉Priority.IMMEDIATE,Priority.HIGH,Priority.NORMAL,Priority.LOW。默認(rèn)為Priority.NORMAL。 - 8 設(shè)置縮略圖
thumbnail() - 9 直接獲得Bitmap
有些時(shí)候我們并不希望把圖片放入ImageView中。我們只要 Bitmap 本身。Glide 提供了一個(gè)用 Targets 的簡(jiǎn)單的方式去接受圖片資源的 Bitmap。Targets 是回調(diào)函數(shù),它在 Glide 做完所有的加載和處理之后返回結(jié)果。
方法1
Glide.with(this).load(url).asBitmap().into(newSimpleTarget<Bitmap>() {
@Override
public voidonResourceReady(Bitmap resource, GlideAnimation<? super Bitmap>glideAnimation) {
//resource即是獲得的Bitmap
}
});
方法2
Bitmap bitmap =Glide.with(MainActivity.this).load(url).asBitmap().into(500, 500).get();
該方式只能在子線程中獲得
- 10加載圖片到Notification中
NotificationTarget notificationTarget =
new NotificationTarget(
Context,
RemoteViews,
viewid,
notificationObject,
notifyId);
Glide.with(this).load(url).asBitmap().into(notificationTarget);
- 11 Glide自帶的一個(gè)漸變動(dòng)畫(huà)
Glide.with(this).load(url).crossFade([duration]).into(iv2);
``
- 12加載Gif
//普通顯示GIF
Glide.with( context ).load( gifUrl ).into( iv );
//添加GIF檢查,如果不是GIF就會(huì)顯示加載失敗位圖
Glide.with( context ).load( gifUrl ).asGif().into( iv);
- 13顯示本地視頻
String filePath ="/storage/emulated/0/Pictures/example_video.mp4";
Glide
.with(context )
.load(Uri.fromFile( new File( filePath ) ) )
.into( iv );
Glid只能加載本地視頻,不能從網(wǎng)絡(luò)中獲取