0.借鑒文章地址:http://blog.csdn.net/zivensonice/article/details/51835802 和 http://www.cnblogs.com/zhaoyanjun/p/5404162.html
1.導包:compile 'com.github.bumptech.glide:glide:3.7.0'
2.基本用法
a.加載圖片:1)加載URL圖片:Glide.with(context).load(URL).into(mImageView);
2)加載SD卡里的圖片-load(String string):Glide.with(context).load(Environment.getExternalStorageDirectory.getAbsolutePath() + "/temp.jpg").into(mImageView);
3)加載SD卡里的圖片-load(File file):Glide.with(context).load(new File(Environment.getExternalStorageDirectory.getAbsolutePath() + "/temp.jpg")).into(mImageView);
4)加載SD卡里的圖片-load(Uri uri):Glide.with(context).load(Uri.fromFile(new File(Environment.getExternalStorageDirectory.getAbsolutePath() + "/temp.jpg"))).into(mImageView);
b.設置加載過程中的圖片:Glide.with(context).load(URL).placeHolder(mImageView1).into(mImageView2);
c.設置加載失敗的圖片:Glide.with(context).load(URL).erro(mImageView1).into(mImageView2);
d.設置切換圖片淡入淡出的效果:Glide.with(context).load(URL).crossFade().into(mImageView);
e.切換圖片有淡入淡出效果,設置效果持續時間:Glide.with(context).load(URL).crossFade(3000).into(mImageView);
f.設置改變圖片大小:Glide.with(context).load(URL).override(int width, int height).into(mImageView);
g.設置圖片加載動畫:Glide.with(context).load(URL).animate(animate resource).into(mImageView);
h.設置圖片加載優先級:Glide.with(context).load(URL).priority(Priority.LOW).into(mImageView);
Glide.with(context).load(URL).priority(Priority.HIGH).into(mImageView);
i.下載圖片(必須加入asBitmap/asGIF):Glide.with(context).load(URL).asBitmap().into(new SimpleTarget<Bitmap>(){
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation){
//保存方法
}
});
j.設置背景圖片:Glide.with(context).load(URL).into(new SimpleTarget<Drawable>(int width, int height){
@Override
public void onResourceReady(Drawable resource, GlideAnimation<? super Drawable> glideAnimation){
//設置背景圖片的方法,如:
btn.setBackground(resource);
}
});
k.設置加載圖片監聽器:Glide.with(context).load(URL).listener(new RequestListener<String, GlideBitmapDrawable>(){
@Override
public boolean onException(Exception e, String model, Target<GlideBitmapDrawable> target, boolean isFirstResource){
//此處為加載圖片錯誤時的操作,返回true代表用戶自己處理,返回false代表交給Glide處理
return false;
}
@Override
public voolean onResourceReady(GlideBitmapDrawable resource, String model, Target<GlideBitmapDrawable> target, boolean isFromMemoryCache, boolean isFirstResource){
//此處為資源准備好時調用的方法,返回true表示時間將會被攔截,不再繼續傳遞下去;返回false表示事件會傳遞下去,一般為false
return false;
}
}).into(mImageView);
l.縮略圖:1)先加載原圖的十分之一作為縮略圖,然后再加載原圖:Glide.with(context).load(URL).thumbnail(0.1f).into(mImageView);
2)把本地圖片作為縮略圖,然后再加載原圖:Glide.with(context).load(URL).thumbnail(Glide.with(context).load(image resource)).into(mImageView);
ps:基本組合使用,如有特殊需求,在后面直接使用對應的方法即可,如:Glide.with(context).load(URL).placeHolder(image resource).error(image resource).into(mImageView);
3.其他使用方法
a.清除內存緩存:Glide.get(context).clearMemory();
b.清除磁盤緩存:Glide.get(context).clearDiskCache();
4.說明
a.with的生命周期
with(Context context):使用Application上下文,Glide請求將不受Activity/Fragment生命周期控制
with(Activity activity). 使用Activity作為上下文,Glide的請求會受到Activity生命周期控制
with(FragmentActivity activity).Glide的請求會受到FragmentActivity生命周期控制
with(android.app.Fragment fragment).Glide的請求會受到Fragment 生命周期控制
with(android.support.v4.app.Fragment fragment).Glide的請求會受到Fragment生命周期控制
b.緩存
1)默認緩存:在Glide源碼中有一個DiskCache接口,里面的Factory類定義了默認的磁盤緩存大小為:250 M , 緩存路徑在:image_manager_disk_cache 目錄下
2)四種緩存模式:
DiskCacheStrategy.SOURCE 緩存原圖
DiskCacheStrategy.RESULT 緩存和imageview大小匹配的圖
DiskCacheStrategy.ALL 既緩存原圖,有緩存和imageview大小匹配的圖
DiskCacheStrategy.NONE 不做任何緩存