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.
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>
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>
pour cercle plein:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="#48b3ff"/>
</shape>
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>
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.
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>
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>
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:
<?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>
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
si vous voulez un cercle comme ceci:
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>
<?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>
, 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
.
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>