我正在使用毕加索框架来处理我的android应用程序中的图像加载。
图像加载后,我需要访问Drawable以应用一些掩蔽操作。问题是,毕加索将可绘制转换为毕加索可绘制,而简单地将其转换回可绘制则行不通。
这是我的密码:

        Picasso.with(mContext).load(image.getPath()).into(mImageView, new Callback() {

            @Override
            public void onSuccess() {

                Util.applyMask(imageView);
            }

            @Override
            public void onError() {
            }
        });

以及util.applymask(imageview)方法:
public static void applyMask(ImageView imageView) {

    // this is where a class cast exception happens since it's actually a PicassoDrawable and not a Drawable
    Bitmap mainImage = ((BitmapDrawable) imageView.getDrawable()).getBitmap();

// ...
}

jake wharton在github问题上给出了一个可能的解决方案:https://github.com/square/picasso/issues/38
总之,解决方案是:“如果您想直接访问位图,那么您需要使用目标回调。PicassoDrawable用于允许淡入和调试指示器。“
我不确定如何访问目标回调。有人知道怎么解决这个问题吗?
谢谢。

最佳答案

这在github(https://github.com/square/picasso/issues/38)得到了回答:

private Target target = new Target() {
      @Override
      public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
      }

      @Override
      public void onBitmapFailed() {
      }
    }

private void loadBitmap() {
   Picasso.with(this).load("url").into(target);
}

10-07 19:21
查看更多