我正在使用 Picasso 框架来处理我的 Android 应用程序中的图像加载。加载图像后,我需要访问 Drawable 以应用一些遮罩操作。问题是 Picasso 将 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
总而言之,解决方案是:“如果您想直接访问位图,那么您需要使用目标回调。PicassoDrawable 用于允许淡入淡出和调试指示器。”
我不确定如何访问 Target 回调。任何人都知道如何解决这个问题?
谢谢。