0

我正在使用 ION ( https://github.com/koush/ion ) 将图像从网络加载ListViewImageView. 目前我想从 中获取位图ImageView,但我遇到了一个强制关闭我的应用程序的异常:

java.lang.ClassCastException: com.koushikdutta.ion.IonDrawable cannot be cast to android.graphics.drawable.BitmapDrawable

这些是我正在使用的行:

final ImageView itemImageView = (ImageView)view.findViewById(R.id.photoImage);
final Bitmap itemDrawable = ((BitmapDrawable) itemImageView.getDrawable()).getBitmap();

我该如何解决这个问题?提前致谢!

4

4 回答 4

5

Ion 设置了一个自定义可绘制对象来管理动画 GIF、淡入淡出过渡等,因此它不能转换为 BitmapDrawable。

采用:

Ion.with(imageView).getBitmap()

取出位图

于 2014-12-26T08:41:55.923 回答
3

如果您在发出 Ion 请求时设置回调并让它返回 ImageViewBitmapInfo,您可以通过这种方式检索位图。例如

Ion.with(imageView)
   .placeholder(R.drawable.default_avatar)
   .load(userImageURL)
   .withBitmapInfo()
   .setCallback(new FutureCallback<ImageViewBitmapInfo>() {
       @Override
       public void onCompleted(Exception e, ImageViewBitmapInfo result) {
           // Check for exceptions

           // Check bitmaps first
           Bitmap b = result.getBitmapInfo().bitmaps[0];
           ...
       };
于 2014-10-27T21:18:15.307 回答
1

可能值得研究:

nostra13 的“通用图像加载器”

这是一个很棒的库,具有大量功能,可以显示来自 URL 的图像、转换为位图等。

于 2014-07-02T16:08:02.967 回答
1
if(imageView.getDrawable() instanceof BitmapDrawable)
    bm = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
else { /***to check if it is ION drawable, use ION*/
    bm = Ion.with(imageView).getBitmap();
}
于 2015-04-26T01:58:13.173 回答