Ich habe vor kurzem 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 (Leinwand) Methode durchgeführt, indem auf die Leinwand Zeichnung, die in übergeben wird:Benutzerdefinierte ImageView-Klasse funktioniert nicht mit Picasso-Image-Download-Bibliothek
//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);
}
So dieses Bit funktioniert, wenn das Bild über ein ziehbar oder Bitmap-Einstellung. Ich habe es auch erweitert, damit ich es mit Google's Volley NetworkImageView verwenden kann, das auch funktioniert.
Mein Problem kommt, wenn ich versuche und mir meine CircularImageView-Klasse neben Picasso Image-Download-Bibliothek, wie ich es sehe als Alternative zu Volley. Was passiert, ist eine ClassCastException in meiner loadBitmap() -Funktion in der ersten Zeile beim Abrufen der BitmapDrawable.
Bevor Picasso das Bild heruntergeladen hat, rundet es das Platzhalterbild gut ab. Sobald das Bild jedoch von Picasso heruntergeladen wurde, schlägt es mit einer ClassCastException fehl, da getDrawable() und PicassoDrawable anstelle von BitmapDrawable zurückgegeben werden.
Ich würde gerne die Arbeit zu runden das Bild in der OnDraw (Canvas) -Methode in meiner CircularImageView-Klasse, wie es schön enthalten ist und automatisch im Gegensatz zu den Prozess beim Einrichten der ImageView mit Picasso jedes Mal . Ist das möglich?
Vielen Dank im Voraus.
Dies erstellt jedes Mal ein neues Bitmap, nicht? – secureboot
Danke DesertIvy, droidx und Jake Wharton für die Hilfe. Das Projekt, für das es bestimmt war, wurde auf Eis gelegt und kam jetzt einfach auf das Problem zurück. Ich habe gerade das oben genannte mit Arbeiten einfach perfekt versucht. –