J'essaie d'arrondir les coins sur un Android ImageButton, le code ressemble à ceci;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical" Android:layout_width="match_parent"
Android:layout_height="match_parent">
<RelativeLayout
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<ImageButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/imageButton"
Android:layout_marginTop="57dp"
Android:src="@drawable/friends"
Android:padding="1dp"
Android:layout_alignParentTop="true"
Android:layout_toLeftOf="@+id/imageButton2"
Android:layout_marginRight="62dp" />
</RelativeLayout>
</LinearLayout>
Fondamentalement, notre sortie est un ImageButton mais il a des coins carrés, nous essayons d'arrondir les coins.
Merci
Utilisez Forme dans Android pour faire les coins arrondis
créez le fichier xml nommé roundcorner.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#33DDFF" />
<corners Android:radius="4dp" />
</shape>
Dans votre bouton Image, ajoutez cet attribut Android:background="@drawable/roundcorner"
<ImageButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/imageButton"
Android:layout_marginTop="57dp"
Android:src="@drawable/friends"
Android:background="@drawable/roundcorner"
Android:padding="1dp"
Android:layout_alignParentTop="true"
Android:layout_toLeftOf="@+id/imageButton2"
Android:layout_marginRight="62dp" />
Vous pouvez utiliser un sélecteur composé de dessins de forme comme arrière-plan, par exemple:
round_bg.xml (à créer dans le dossier res/drawable-nodpi)
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="#ffffff" />
<corners
Android:bottomLeftRadius="4dp"
Android:bottomRightRadius="4dp"
Android:topLeftRadius="4dp"
Android:topRightRadius="4dp" />
</shape>
Créez-en un autre, en changeant la couleur référencée dans solid Android:color="#ffffff"
, par exemple à solid Android:color="#ff0000"
et nommez ce fichier rounded_bg_selected.xml
Créez le sélecteur (également dans res/drawable-nodpi), nommez-le selectable_button_bg.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true"
Android:drawable="@drawable/rounded_bg_selected" />
<item Android:state_focused="false"
Android:drawable="@drawable/rounded_bg" />
</selector>
Référencez-le ensuite dans votre mise en page:
<ImageButton
Android:background="@drawable/selectable_button_bg"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/imageButton"
Android:layout_marginTop="57dp"
Android:src="@drawable/friends"
Android:padding="1dp"
Android:layout_alignParentTop="true"
Android:layout_toLeftOf="@+id/imageButton2"
Android:layout_marginRight="62dp" />
Créer image_rounded_corner.xml
intérieur/res/dessinable
<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#000000" />
<stroke Android:width="3dp" Android:color="#776da8" />
<corners Android:bottomRightRadius="5dp" Android:bottomLeftRadius="5dp" Android:topLeftRadius="5dp" Android:topRightRadius="5dp" />
<padding Android:left="2dp" Android:top="2dp" Android:right="2dp" Android:bottom="2dp" />
</shape>
Appelez le fichier image_rounded_corner.xml avec Android:background
<ImageView Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/myimage"
Android:src="@drawable/icon"
Android:background="@drawable/image_rounded_corner" />
ou utilisez un fichier Draw 9-patch comme suggéré "Artoo Detoo".
Utilisez ceci: mettez-le dans le dossier res/drawable
my_gradient.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<corners Android:radius="100dp" />
<stroke
Android:width="5dp"
Android:color="#090" />
</shape>
Dans votre ImageButton Il suffit de mettre:
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;
}
ce code vous aidera. (D'un article chinois: http://www.cnblogs.com/liuweiming/archive/2012/04/23/2466074.html )