Glide 圖片載入庫的坑
阿新 • • 發佈:2019-01-09
1:CircleImageView 使用Glide 載入時,設定placeholder,導致圖片不顯示
// 解決:加上.dontAnimate()
.placeholder(R.mipmap.mine_placehold)
.dontAnimate()
2:使用Glide 載入的圖片,獲取bitmap轉為為string是報錯
java.lang.ClassCastException: com.bumptech.glide.request.target.SquaringDrawable cannot be cast to
android.graphics.drawable.BitmapDrawable
、
// 轉化程式碼如下
// 獲取imageview的圖片,並且轉化為可傳遞的string
public static String GetStringByImageView(ImageView imageView){
// 從ImageView得到Bitmap物件
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
// 把Bitmap轉碼成字串
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 50,baos);
String imageBase64 = new String (Base64.encode(baos.toByteArray(), 0));
return imageBase64;
}
、
// 錯誤分析 :
通過Glide載入的image--
imageView.getDrawable() 獲取的Drawable 型別不是BitmapDrawable
而是 GlideBitmapDrawable
因此型別錯誤導致
// 解決:加上.asBitmap()
.load(imageURLString)
.asBitmap()
3:使用Glide 載入圖片,經常報錯 You cannot start a load for a destroyed activity
// 解決:為了一勞永逸我直接獲取了application的context用來載入,一勞永逸
// 如下(KapApplication 是自定義的:public class KapApplication extends Application)
// Glide 幫助類
public class KapGlideHelper {
/**
* 用Application context 防止出現
* */
// 建立gradle
public static RequestManager CreatedGlide(){
return Glide.with(KapApplication.getContext());
}
// 取消gradle請求
public static void PaauseRequests(){
Glide.with(KapApplication.getContext()).pauseRequests();
}
}
// 使用:
KapGlideHelper.CreatedGlide().load(imageURLString)
.asBitmap()
.placeholder(R.mipmap.mine_placehold)
.into(imageView);
// 缺點是:無法以activity為單位控制網路請求~~
4 .作為GalleryFinal多選框架的圖片載入引擎是遇到的一個小問題
.skipMemoryCache(true)
//.centerCrop()
.into(new ImageViewTarget<GlideDrawable>(imageView) {
@Override
protected void setResource(GlideDrawable resource) {
imageView.setImageDrawable(resource);
}
// adapter_item_tag_key 僅是ids.xml的一個識別符號
@Override
public void setRequest(Request request) {
imageView.setTag(R.id.adapter_item_tag_key,request);
}
@Override
public Request getRequest() {
return (Request) imageView.getTag(R.id.adapter_item_tag_key);
}
});
、
// adapter_item_tag_key這個僅僅是一個識別符號而已
// 添加於自己的ids.xml中即可
<resources>
<item name="adapter_item_tag_key" type="id"/>
</resources>
連結:http://www.jianshu.com/p/4a206275137b
來源:簡書
// 解決:加上.dontAnimate()
.placeholder(R.mipmap.mine_placehold)
.dontAnimate()
2:使用Glide 載入的圖片,獲取bitmap轉為為string是報錯
java.lang.ClassCastException: com.bumptech.glide.request.target.SquaringDrawable cannot be cast to
android.graphics.drawable.BitmapDrawable
、
// 轉化程式碼如下
// 獲取imageview的圖片,並且轉化為可傳遞的string
public static String GetStringByImageView(ImageView imageView){
// 從ImageView得到Bitmap物件
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
// 把Bitmap轉碼成字串
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 50,baos);
String imageBase64 = new String (Base64.encode(baos.toByteArray(), 0));
return imageBase64;
}
、
// 錯誤分析 :
通過Glide載入的image--
imageView.getDrawable() 獲取的Drawable 型別不是BitmapDrawable
而是 GlideBitmapDrawable
因此型別錯誤導致
// 解決:加上.asBitmap()
.load(imageURLString)
.asBitmap()
3:使用Glide 載入圖片,經常報錯 You cannot start a load for a destroyed activity
// 解決:為了一勞永逸我直接獲取了application的context用來載入,一勞永逸
// 如下(KapApplication 是自定義的:public class KapApplication extends Application)
// Glide 幫助類
public class KapGlideHelper {
/**
* 用Application context 防止出現
* */
// 建立gradle
public static RequestManager CreatedGlide(){
return Glide.with(KapApplication.getContext());
}
// 取消gradle請求
public static void PaauseRequests(){
Glide.with(KapApplication.getContext()).pauseRequests();
}
}
// 使用:
KapGlideHelper.CreatedGlide().load(imageURLString)
.asBitmap()
.placeholder(R.mipmap.mine_placehold)
.into(imageView);
// 缺點是:無法以activity為單位控制網路請求~~
4 .作為GalleryFinal多選框架的圖片載入引擎是遇到的一個小問題
.skipMemoryCache(true)
//.centerCrop()
.into(new ImageViewTarget<GlideDrawable>(imageView) {
@Override
protected void setResource(GlideDrawable resource) {
imageView.setImageDrawable(resource);
}
// adapter_item_tag_key 僅是ids.xml的一個識別符號
@Override
public void setRequest(Request request) {
imageView.setTag(R.id.adapter_item_tag_key,request);
}
@Override
public Request getRequest() {
return (Request) imageView.getTag(R.id.adapter_item_tag_key);
}
});
、
// adapter_item_tag_key這個僅僅是一個識別符號而已
// 添加於自己的ids.xml中即可
<resources>
<item name="adapter_item_tag_key" type="id"/>
</resources>
連結:http://www.jianshu.com/p/4a206275137b
來源:簡書