web-dev-qa-db-fra.com

Coins arrondis Android boutons d'image

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

24
CBreeze

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" />
53
Nambi

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" />
9
2Dee

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".

5
Jorgesys

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"
4
Sagar Shah
 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 )

0
user3682351