Я использую среду 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 actually a PicassoDrawable and not a Drawable
Bitmap mainImage = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
// ...
}
Возможное решение дано Джейком Уортоном в этом выпуске github: https://github.com/square/picasso/issues/38
Подводя итог, решение: "Если вы хотите получить доступ к Bitmap напрямую, вам нужно будет использовать обратные вызовы Target. PicassoDrawable используется для разрешения затухания и индикатора отладки".
Я не совсем уверен, как получить доступ к обратному вызову Target. Кто-нибудь знает, как это решить?
Спасибо.