前言:
談到圖片加載框架,必然會想到picasso,glide,甚至是比較經(jīng)典的已經(jīng)不再維護(hù)的Image-Loader.Glide 作為google推薦的圖片加載框架,值得一探究竟。
基本使用:
Glide.with(context).url(url).into(imageview);
這樣我們就能加載一張網(wǎng)絡(luò)圖片了,是不是很簡單.
記得加入網(wǎng)絡(luò)權(quán)限.glide的強(qiáng)大之處遠(yuǎn)遠(yuǎn)不止于此,
中級用法:
-
設(shè)置占位圖:
當(dāng)我們加載圖片時如果想給imageview設(shè)置一張默認(rèn)的圖片只需:
Glide.with(this).load(url).placeholder(R.drawble.place).into(imageview);
-
設(shè)置錯誤圖片:
當(dāng)網(wǎng)絡(luò)錯誤或者某些原因?qū)е聢D片加載失敗時設(shè)置錯誤圖片我們只需:
Glide.with(this).load(url)..centerCrop().placeholder(R.drawble.place).error(R.drawble.load.error).into(imageview);
-
加載本地圖片:
加載本地圖片只需傳入file即可:
Glide.with(context).load(file).into(imageview);
-
加載gif圖片;
glide支持加載gif圖片,和加載普通一樣只需傳入url即可:
Glide.with(this).load(GifUrl).into(imageview);
glide還支持加載本地圖片的第一幀,這樣我們用作視頻的縮略圖,也和加載本地圖片一樣傳入file即可:
Glide.with(context).load(VideoFile).into(imageview);
終極用法:
-
圖片預(yù)處理:
黨我們的圖片有特殊需求的時候(如圓形頭像,高斯模糊等)glide也提供了方法來處理:
通過繼承BitmapTransformation來對圖片進(jìn)行預(yù)處理丑罪;
public class BitmapTransform extends BitmapTransformation {
@Override
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
//toTransform就是可以預(yù)處理的bitmap
}
@Override
public String getId() {
}
}
如果對圖片處理不熟悉泵殴,可以參考glide-transformations,該庫有比較常見的的圖片處理類蚀乔,如高斯模糊蒋纬,圓形泊愧,圓角圖片等.
-
自定義Glide:
我們一般情況下使用glide的時候都比較簡單glide已經(jīng)默認(rèn)幫我們配置好了圖片質(zhì)量,圖片緩存等,當(dāng)我們需要自定義的時候可以通過實(shí)現(xiàn)GlideModule類來實(shí)現(xiàn).
如:
public class MyGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
//可以通過GlideBuilder 來設(shè)置自定義屬性,如:
builder.setDiskCache();//自定義磁盤緩存
builder.setMemoryCache();//自定義內(nèi)存緩存
builder.setDecodeFormat();//自定義圖片質(zhì)量
//還有其他的可自行查看.
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
**注:自定義module需要在AndroidManifest中配置,在application節(jié)點(diǎn)下添加:
<meta-data android:name="com.xxx.MyGlideModule" android:value="GlideModule" />
這樣就自定義module就完成了,
在清單文件中可以自定義多個GlideModule,
**