Android Glide 載入圖片
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 不做任何快取