La clase personalizada de ImageView no funciona con la biblioteca de descarga de imágenes de Picasso

Recientemente he extendido desde un ImageView para crear una clase CircularImageView que hace que la imagen sea circular con un borde de color. Esto se hace a través del método onDraw (lienzo) dibujando en el lienzo que se pasa:

//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);
    }   

Así que este bit funciona cuando se configura la imagen a través de un mapa de bits o dibujable. También lo extendí para poder usarlo con Volley NetworkImageView de Google, que también funciona.

Mi problema se presenta cuando intento mi clase CircularImageView junto con la biblioteca de descarga de imágenes de Picasso cuando lo veo como una alternativa a Volley. Lo que ocurre es una ClassCastException en mi función loadBitmap () en la primera línea al obtener el BitmapDrawable.

private void loadBitmap()
{
    BitmapDrawable bitmapDrawable = (BitmapDrawable) this.getDrawable();

    if(bitmapDrawable != null)
        image = bitmapDrawable.getBitmap();
}

Inicialmente, antes de que Picasso haya descargado la imagen, redondea la imagen del marcador de posición. Pero tan pronto como la imagen ha sido descargada por Picasso, falla con una excepción ClassCastException, ya que getDrawable () devuelve y PicassoDrawable en lugar de un BitmapDrawable.

Me gustaría mantener el trabajo para redondear la imagen en el método onDraw (lienzo) en mi clase CircularImageView, ya que está muy bien contenido y es automático en lugar de hacer el proceso al configurar ImageView con Picasso cada vez. es posible?

Gracias por adelantado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta