Пользовательский класс 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 каждый раз. Это возможно?

Заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос