Пользовательский класс ImageView не работает с библиотекой загрузки изображений Picasso
Недавно я расширил ImageView для создания класса CircularImageView, который делает изображение круглым с цветной рамкой. Это делается с помощью метода onDraw (canvas) путем рисования на холст, который передается в:
//load the bitmap
loadBitmap();
// init shader
if(image !=null)
{
shader = new BitmapShader(Bitmap.createScaledBitmap(image, viewWidth + (borderWidth * 2), viewHeight + (borderWidth * 2), true), Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
paint.setShader(shader);
int circleCenter = viewWidth / 2;
// circleCenter is the x or y of the view's center
// radius is the radius in pixels of the cirle to be drawn
// paint contains the shader that will texture the shape
canvas.drawCircle(circleCenter + borderWidth, circleCenter + borderWidth, circleCenter + borderWidth, paintBorder);
canvas.drawCircle(circleCenter + borderWidth, circleCenter + borderWidth, circleCenter, paintBackground);
canvas.drawCircle(circleCenter + borderWidth, circleCenter + borderWidth, circleCenter, paint);
}
Так что этот бит работает при установке изображения с помощью рисования или растрового изображения. Я также расширил его, чтобы я мог использовать его с Google "залп NetworkImageView, который также работает.
Моя проблема возникает, когда я пытаюсь использовать мой класс CircularImageView вместе с библиотекой загрузки изображений Picasso, поскольку я рассматриваю это как альтернативу Volley. Происходит исключение ClassCastException в моей функции loadBitmap () в первой строке при получении BitmapDrawable.
private void loadBitmap()
{
BitmapDrawable bitmapDrawable = (BitmapDrawable) this.getDrawable();
if(bitmapDrawable != null)
image = bitmapDrawable.getBitmap();
}
Первоначально, до того как Пикассо загрузил картинку, она отлично округляет изображение заполнителя. Но как только изображение было загружено Picasso, оно завершается ошибкой с ClassCastException, так как getDrawable () возвращает и PicassoDrawable, а не BitmapDrawable.
Я хотел бы сохранить работу по округлению изображения в методе onDraw (canvas) в моем классе CircularImageView, так как оно красиво содержится и является автоматическим, в отличие от выполнения процесса при настройке ImageView с Picasso каждый раз. Это возможно?
Заранее спасибо.