您的位置:首页 > 产品设计 > UI/UE

java.lang.ClassCastException: com.bumptech.glide.request.target.SquaringDrawable cannot be cast to a

2017-06-15 10:57 597 查看


Glide 图片加载报错:java.lang.ClassCastException: com.bumptech.glide.request.target.SquaringDrawable cannot be cast to a。。。。。

在自定义ImageView加载的时候报错了:
问题代码:



解决方式:

// 解决:加上.asBitmap()
.load(imageURLString)
.asBitmap()


另外附上经常出现的报错:

CircleImageView 使用Glide 加载时,设置placeholder,导致图片不显示
// 解决:加上.dontAnimate()
.placeholder(R.mipmap.mine_placehold)
.dontAnimate()


使用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()

附上一个自己简单封装的activity间传递image的功能类
使用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为单位控制网络请求~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Gilde 报错
相关文章推荐