Vielen Dank, es funktioniert einwandfrei. Ich frage mich, warum es kein XML-Attribut gibt, damit wir es schneller machen können..!
– Kwnstantinos Nikoloutsos
24. Juni 2018 um 0:26 Uhr
Diese Lösung funktionierte bei mir nicht, aber nachdem ich die Eigenschaft android:shape auf “ring” gesetzt hatte, funktionierte sie. Ich denke, Sie haben diesen Teil wahrscheinlich verpasst.
2Dee
Sie könnten zum Beispiel einen Selektor aus Shape Drawables als Hintergrund verwenden:
rounded_bg.xml (wird im Ordner res/drawable-nodpi erstellt)
Erstellen Sie ein weiteres und ändern Sie die Farbe, auf die verwiesen wird solid android:color="#ffffff" zum Beispiel zu solid android:color="#ff0000" und benennen Sie diese Datei rounded_bg_selected.xml
Erstellen Sie den Selektor (auch in res/drawable-nodpi), benennen Sie ihn selectable_button_bg.xml:
Geben Sie in Ihrem ImageButton einfach Folgendes ein:
android:background="@drawable/my_gradient"
public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
final float roundPx = pixels;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
Sehr schön, soweit ich das beurteilen kann, ist dies die einzige Lösung, die die Bitmap-Ecken tatsächlich abrundet. Die Antworten, die einen Hintergrund setzen, zeichnen nur einen abgerundeten Umriss unter dem Bild, aber die Bildecken sind immer noch quadratisch. Um eine Bitmap zu verarbeiten, die bereits einem ImageButton zugewiesen ist, können Sie etwa so vorgehen: BitmapDrawable bmd = (BitmapDrawable)btn.getDrawable(); btn.setImageBitmap(toRoundCorner(bmd.getBitmap(), 15));
– Georgie
26. März 2022 um 7:40 Uhr
Sehr schön, soweit ich das beurteilen kann, ist dies die einzige Lösung, die die Bitmap-Ecken tatsächlich abrundet. Die Antworten, die einen Hintergrund setzen, zeichnen nur einen abgerundeten Umriss unter dem Bild, aber die Bildecken sind immer noch quadratisch. Um eine Bitmap zu verarbeiten, die bereits einem ImageButton zugewiesen ist, können Sie etwa so vorgehen: BitmapDrawable bmd = (BitmapDrawable)btn.getDrawable(); btn.setImageBitmap(toRoundCorner(bmd.getBitmap(), 15));
stackoverflow.com/questions/16791449/…. Verwenden Sie einen Selektor und diesen stackoverflow.com/questions/12771367/…
– Raghunandan
7. Februar 2014 um 17:08 Uhr