Ich habe kürzlich von einem ImageView erweitert, um eine CircularImageView-Klasse zu erstellen, die das Bild mit einem farbigen Rand kreisförmig macht. Dies geschieht über die onDraw (Canvas) -Methode, indem auf den Canvas, der übergeben wird, gezeichnet wird:
%Vor%Dieses Bit funktioniert also, wenn Sie das Bild über ein Zeichen- oder Bitmap-Bild setzen. Ich habe es auch erweitert, damit ich es mit Google Volley NetworkImageView verwenden kann, das auch funktioniert.
Mein Problem kommt, wenn ich versuche, meine CircularImageView-Klasse neben der Picasso-Bild-Download-Bibliothek zu verwenden, da ich sie als Alternative zu Volley ansehe. Was passiert, ist eine ClassCastException in meiner loadBitmap () -Funktion in der ersten Zeile beim Abrufen der BitmapDrawable.
%Vor%Ursprünglich, bevor Picasso das Bild heruntergeladen hat, rundet es das Platzhalterbild gut ab. Aber sobald das Bild von Picasso heruntergeladen wurde, schlägt es mit einer ClassCastException fehl, da getDrawable () und PicassoDrawable anstelle von BitmapDrawable zurückgegeben werden.
Ich möchte die Arbeit beibehalten, um das Bild in der onDraw (Canvas) -Methode in meiner CircularImageView-Klasse zu runden, da es schön enthalten und automatisch ist, anstatt den Prozess beim Einrichten der ImageView mit Picasso jedes Mal zu tun. Ist das möglich?
Vielen Dank im Voraus.
Wenn Sie dies mit Picasso tun, sollten Sie entweder:
Transformation
an, so dass die gerundete Bitmap im Speicher zwischengespeichert wird, oder ImageView
. Details zu dieser Technik wurden von dem "Cagin Romain Guy" umrissen / "> in seinem Blog
Wenn versucht wird, das zugrunde liegende Bitmap
aus einem ImageView
zu ziehen, handelt es sich um ein Anti-Pattern. Wenn Sie Zugriff auf eine Bitmap
benötigen (und Sie nicht, sollten Sie eine der oben genannten verwenden), implementieren Sie Target
auf Ihrer Ansicht, deren onBitmapSuccess
-Rückruf es bereitstellen wird.
Tags und Links android image android-canvas bitmapimage picasso