Niestandardowa klasa ImageView nie działa z biblioteką pobierania obrazów Picasso

Ostatnio rozszerzyłem z ImageView, aby utworzyć klasę CircularImageView, która sprawia, że ​​obraz jest okrągły z kolorową ramką. Odbywa się to za pomocą metody onDraw (canvas), rysując na płótnie, które jest przekazywane:

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

Ten bit działa przy ustawianiu obrazu za pomocą szuflady lub mapy bitowej. Rozszerzyłem go, więc mogę go używać z Google Volley NetworkImageView, który również działa.

Mój problem pojawia się, gdy próbuję i my, moja klasa CircularImageView, obok biblioteki pobierania obrazów Picassa, patrząc na to jako alternatywę dla Volleya. Występuje wyjątek ClassCastException w mojej funkcji loadBitmap () w pierwszym wierszu podczas pobierania BitmapDrawable.

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

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

Początkowo, zanim Picasso pobrał zdjęcie, zaokrągla obraz zastępczy w porządku. Ale gdy tylko obraz zostanie pobrany przez Picassa, kończy się niepowodzeniem z wyjątkiem ClassCastException, ponieważ zwraca getDrawable (), a PicassoDrawable zamiast BitmapDrawable.

Chciałbym kontynuować pracę nad zaokrąglaniem obrazu w metodzie onDraw (canvas) w mojej klasie CircularImageView, ponieważ jest ona ładnie zamknięta i automatyczna w przeciwieństwie do wykonywania procesu podczas konfigurowania ImageView za pomocą Picassa za każdym razem. czy to możliwe?

Z góry dziękuję.

questionAnswers(2)

yourAnswerToTheQuestion