Glide使用詳解

分類:技術 時間:2016-10-25

一、Glide簡介

Glide 是 Google 員工的開源項目, Google I/O上被推薦使用,一個高效、開源、Android設備上的媒體管理框架,它遵循BSD、MIT以及Apache2.0協議發布。Glide具有獲取、解碼和展示視頻劇照、圖片、動畫等功能,它還有靈活的API,這些API使開發者能夠將Glide應用在幾乎任何網絡協議棧里。

二、Glide特點

1. 使用簡單

2. 可配置度高,自適應程度高

3. 支持常見圖片格式,jpg、png、gif、webp

4. 支持多種數據源,網絡、資源、assets 、File、Uri等

5. 高效緩存策略支持內存和硬盤緩存

6. 生命周期集成根據Activity/Fragment生命周期自動管理請求

7. 高效處理Bitmap

三、

Android Studio導入依賴

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

四、設置綁定生命周期

1. 綁定Context

Glide.with(Context context);

2. 綁定Activity

Glide.with(Activity activity);

3. 綁定FragmentActivity

Glide.with(FragmentActivity activity);

4. 綁定Fragment

Glide.with(Fragment fragment);

【注】將Activity/Fragment作為with()參數的好處是,圖片加載會和Activity/Fragment的生命周期保持一致,比如 Paused狀態在暫停加載,在Resumed的時候又自動重新加載。

五、加載資源

1. 加載網絡資源

Glide.with(context).load(quot;http://i.imgur.com/1opCuAV.jpgquot;).into(imageView);

2. 加載assets資源

Glide.with(context).load(quot;file:///android_asset/hb_head.pngquot;).into(imageView);

3. 加載Resources資源

Glide.with(context).load(R.mipmap.ic_launcher).into(imageView);

4. 加載File資源

Glide.with(context).load(file).into(imageView);

5. 加載Uri資源

Glide.with(context).load(uri).into(imageView);

6. 加載字節數組

Glide.with(context).load(byte[]).into(imageView);

六、設置加載中和加載失敗的圖片

設置加載中圖片

.placeholder(R.drawable.user_placeholder)

設置加載失敗圖片

.error(R.drawable.user_placeholder_error)

七、設置縮略圖支持

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

【注】先加載縮略圖 然后在加載全圖

八、加載GIF

顯示gif靜態圖片

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

顯示gif動態圖片

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

九、設置加載動畫

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

十、設置請求監聽

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

十一、設置加載尺寸

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

centerCrop():拉伸截取中間部分顯示

fitCenter():等比拉伸填滿ImageView

十二、自定義圖片轉換

自定義BitmapTransformation

class RoundTransformation extends BitmapTransformation{

public RoundTransformation(Context context) {

super(context);

}

@Override

protected Bitmap transform(BitmapPool pool, Bitmap toTransform,

int outWidth, int outHeight) {

//根據需要,進行Bitmap轉換

Bitmap roteBmp = BitmapUtils.getRoundCornerBitmap(toTransform, 360);

if (roteBmp != toTransform) {

toTransform.recycle();

}

return roteBmp;

}

@Override

public String getId() {

return quot;glidequot;;

}

}

設置圖片轉換

Glide.with(this).load(imageUrl)

.transform(newRoundTransformation(this))

.into(imageView);

十三、緩存策略

1. 設置跳過內存緩存

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

2. 設置緩存策略

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

【注】

DiskCacheStrategy.ALL 緩存源資源和轉換后的資源

DiskCacheStrategy.NONE 不作任何磁盤緩存

DiskCacheStrategy.SOURCE 緩存源資源

DiskCacheStrategy.RESULT 緩存轉換后的資源

3. 清理緩存

清理磁盤緩存 需要在子線程中執行

Glide.get(this).clearDiskCache();

清理內存緩存 可以在UI主線程中進

Glide.get(this).clearMemory();


Tags: Bitmap 安卓開發

文章來源:http://www.jianshu.com/p/9dfaf112b970


ads
ads

相關文章
ads

相關文章

ad