Comment définir une forme de cercle dans un fichier dessinable XML android?

j'ai quelques problèmes à trouver la documentation des définitions de formes en XML pour Android. Je voudrais définir un cercle simple rempli d'une couleur solide dans un fichier XML pour l'inclure dans mes fichiers de mise en page.

malheureusement la Documentation sur android.com ne couvre pas les attributs XML des classes Shape. Je pense que je devrais utiliser un ArcShape pour dessiner un cercle, mais il n'y a aucune explication sur la façon de définir la taille, la couleur, ou la angle nécessaire pour faire un cercle d'un Arc.

519
demandé sur naXa 2010-07-06 13:40:32

12 réponses

c'est un cercle simple comme un dessin dans Android.

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

   <solid 
       android:color="#666666"/>

   <size 
       android:width="120dp"
        android:height="120dp"/>
</shape>
1166
répondu Arefin 2012-08-25 12:24:53

mettez ceci comme votre arrière-plan de vue

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke
        android:width="1dp"
        android:color="#78d9ff"/>
</shape>

enter image description here

pour cercle plein:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid
        android:color="#48b3ff"/>
</shape>

enter image description here

solide avec course:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#199fff"/>
    <stroke
        android:width="2dp"
        android:color="#444444"/>
</shape>

enter image description here

Note : Pour faire apparaître la forme oval comme un cercle, dans ces exemples, soit votre point de vue que vous utilisez cette forme comme son arrière-plan devrait être un carré ou vous devez définir les propriétés height et width de l'étiquette de forme à une valeur égale.

613
répondu M. Reza Nasirloo 2018-09-14 09:54:40

Code pour cercle Simple

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
        <solid android:color="#9F2200"/>
        <stroke android:width="2dp" android:color="#fff" />
        <size android:width="80dp" android:height="80dp"/>
</shape>
83
répondu Ravi Makvana 2015-06-04 11:41:19

regardez dans les échantillons SDK Android. Il y a plusieurs exemples dans le projet ApiDemos:

/ ApiDemos/res/drawable /

  • black_box.xml
  • shape_5.xml
  • etc

il ressemblera à quelque chose comme ceci pour un cercle avec un remplissage de pente:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF"
            android:angle="270"/>
</shape>

45
répondu goosemanjack 2011-08-11 17:32:37

vous pouvez utiliser VectorDrawable comme ci-dessous:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="200dp"
    android:height="200dp"
    android:viewportHeight="64"
    android:viewportWidth="64">

    <path
        android:fillColor="#ff00ff"
        android:pathData="M22,32
        A10,10 0 1,1 42,32
        A10,10 0 1,1 22,32 Z" />
</vector>

le xml ci-dessus rend comme:

enter image description here

40
répondu Riyas PK 2018-04-30 09:52:55
<?xml version="1.0" encoding="utf-8"?>
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <!-- fill color -->
    <solid android:color="@color/white" />

    <!-- radius -->
    <stroke
        android:width="1dp"
        android:color="@color/white" />

    <!-- corners -->
    <corners
        android:radius="2dp"/>
</shape>
20
répondu Ashana.Jackol 2018-06-07 09:40:02

voici un simple circle_background.xml pour le pré-matériel:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="oval">
            <solid android:color="@color/color_accent_dark" />
        </shape>
    </item>
    <item>
        <shape android:shape="oval">
            <solid android:color="@color/color_accent" />
        </shape>
    </item>
</selector>

vous pouvez utiliser l'attribut 'android:background="@drawable/circle_background" dans la définition de la mise en page de votre bouton

15
répondu kip2 2015-06-09 23:28:08

si vous voulez un cercle comme ceci:

enter image description here

essayez le code ci-dessous:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="2"
android:useLevel="false" >
<solid android:color="@android:color/white" />
<stroke
    android:width="1dp"
    android:color="@android:color/darker_gray" /></shape>
7
répondu Paraskevas Ntsounos 2018-08-29 13:16:45
<?xml version="1.0" encoding="utf-8"?>
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <stroke
        android:width="10dp"
        android:color="@color/white"/>

    <gradient
        android:startColor="@color/red"
        android:centerColor="@color/red"
        android:endColor="@color/red"
        android:angle="270"/>

    <size 
        android:width="250dp" 
        android:height="250dp"/>
</shape>
6
répondu TeeTracker 2017-10-18 21:21:50

, Vous pouvez essayer ce - que

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadiusRatio="700"
    android:thickness="100dp"
    android:useLevel="false">

    <solid android:color="#CCC" />

</shape>

Aussi, vous pouvez ajuster le rayon du cercle en ajustant android:thickness .

enter image description here

1
répondu hkr98 2018-06-07 08:39:26

Je ne pouvais pas tracer de cercle à l'intérieur de ma contrainte pour une raison quelconque, Je ne pouvais tout simplement pas utiliser l'une des réponses ci-dessus.

ce qui a parfaitement fonctionné est un TextView simple avec le texte qui sort, quand vous appuyez sur "Alt+7":

 <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#0075bc"
            android:textSize="40dp"
            android:text="•"></TextView>
0
répondu Иво Недев 2018-05-01 13:52:40

il suffit d'utiliser

ShapeDrawable circle = new ShapeDrawable( new  OvalShape() );
-25
répondu 2010-07-06 10:05:43