我正在使用Picasso框架来处理我的Android应用程序中的图像加载。
加载图像后,我需要访问Drawable来应用一些掩蔽操作。问题是毕加索将Drawable转换为PicassoDrawable,而简单地将其转换回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
总之,解决方案是:“如果你想直接访问位图,那么你需要使用Target回调。PicassoDrawable用于允许淡入和调试指示符。”
我不太确定如何访问Target回调。有人知道如何解决这个问题吗?
谢谢