Как получить доступ к Drawable при использовании Picasso?
Я использую среду 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. Кто-нибудь знает, как это решить?
Спасибо.
Ответы
Ответ 1
Об этом ответил 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);
}