web-dev-qa-db-fra.com

Comment définir une forme de cercle dans un fichier extractible Android xml?

J'ai quelques problèmes pour trouver la documentation des définitions de formes en XML pour Android. J'aimerais définir un simple cercle rempli d'une couleur unie 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 rien n’explique comment définir la taille, la couleur ou l’angle nécessaire pour créer un cercle à partir d’un arc.

554
Janusz

Il s’agit d’un simple cercle dessiné sous 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>
1246
Arefin

Définir comme arrière-plan de votre 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 les cercles pleins:

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

 enter image description here

Solide avec le coup:

<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 que la forme oval apparaisse sous forme de cercle, dans ces exemples, votre vue selon laquelle vous utilisez cette forme comme arrière-plan doit être un carré ou vous devez définir les propriétés height et width de la balise de forme à une valeur égale.

663
M. Reza Nasirloo

Code pour le 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>
87
Ravi Makvana

Regardez dans les exemples du SDK Android. Il y a plusieurs exemples dans le projet ApiDemos:

/ ApiDemos/res/drawable / 

  • black_box.xml
  • forme_5.xml 
  • etc

Cela ressemblera à ceci pour un cercle avec un remplissage en dégradé:

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

46
goosemanjack

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 se présente comme suit:

 enter image description here

42
Riyas PK
<?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
Ashana.Jackol

Voici un simple circle_background.xml pour le pré-matériau:

<?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 présentation de votre bouton

15
kip2

Si vous voulez un cercle comme ceci

 enter image description here

Essayez d'utiliser 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>
8
Paraskevas Ntsounos
<?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
TeeTracker

Vous pouvez essayer ceci -

<?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>

De plus, vous pouvez ajuster le rayon du cercle en ajustant Android:thickness.

 enter image description here

2
Kumar Hitesh
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape Android:shape="oval">
            <solid Android:color="@color/text_color_green"/>
            <!-- Set the same value for both width and height to get a circular shape -->
            <size Android:width="250dp" Android:height="250dp"/>
        </shape>
    </item>
</selector>
0
varun setia

res/drawble/circle_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>

        <shape Android:shape="oval">
            <solid Android:color="#e42828"/>
            <stroke Android:color="#3b91d7" Android:width="5dp"/>
            <!-- Set the same value for both width and height to get a circular shape -->
            <size Android:width="250dp" Android:height="250dp"/>
        </shape>
    </item>
</selector>

enter image description here

exemple en ligne : https://code-Android-example.blogspot.com/2019/07/how-to-circle-shape-in-xml-drawable-Android.html

0
Tienanhvn

Je ne pouvais pas tracer de cercle dans mon ConstraintLayout pour une raison quelconque, je ne pouvais tout simplement pas utiliser les réponses ci-dessus.

Ce qui a parfaitement fonctionné est un simple TextView avec le texte qui sort lorsque 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