avec ce code je reçois juste une bordure:
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="ring"
Android:innerRadius="15dp"
Android:thickness="2dp"
Android:useLevel="false">
<solid Android:color="#4d4d4d" />
</shape>
comment puis-je créer une forme de bague comme ci-dessous:
Bague extérieure 2dp avec un écart de 2dp:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:top="4dp"
Android:right="4dp"
Android:bottom="4dp"
Android:left="4dp">
<shape
Android:shape="oval">
<solid Android:color="#4d4d4d" />
</shape>
</item>
<item>
<shape
Android:shape="oval">
<stroke Android:width="2dp"
Android:color="#4d4d4d"/>
</shape>
</item>
</layer-list>
Ring drawable est une juxtaposition d'éléments, utilisez layer-list
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:right="6dip" Android:left="6dip">
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:innerRadius="0dp"
Android:shape="ring"
Android:thicknessRatio="3"
Android:useLevel="false" >
<solid Android:color="@Android:color/transparent" />
<stroke
Android:width="5dp"
Android:color="@color/maroon" />
</shape>
</item>
<item Android:right="20dip"
Android:left="20dip"
Android:bottom="0dip"
Android:top="34dip">
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle"
Android:innerRadius="0dp">
<solid Android:color="@color/maroon" />
<stroke Android:width="1dip" Android:color="@Android:color/transparent" />
</shape>
</item>
<item Android:right="20dip"
Android:left="20dip"
Android:bottom="34dip"
Android:top="0dip">
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle"
Android:innerRadius="0dp">
<solid Android:color="@color/maroon" />
<stroke Android:width="1dip" Android:color="@Android:color/transparent" />
</shape>
</item>
</layer-list>
XML pouvant être dessiné par tous les moyens plus utiles que les images statiques, elles peuvent être correctement mises à l'échelle sans qu'il soit nécessaire d'utiliser une bibliothèque .9 ou de générer un ensemble de tailles différentes à partir de Gimp, Photoshop
<item>
<shape
Android:innerRadiusRatio="4"
Android:shape="ring"
Android:thicknessRatio="15"
Android:useLevel="false" >
<solid Android:color="@color/white_color" />
<size
Android:height="48dip"
Android:width="48dip" />
</shape>
</item>
<item>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="ring"
Android:innerRadius="0dp"
Android:thickness="55dp"
Android:useLevel="false">
<solid Android:color="@color/white_color"/>
<size Android:height="200dp"
Android:width="200dp"/>
<stroke Android:color="@color/green_color" Android:width="5dp"/>
</shape>
</item>
Je pense que l’utilisation d’une forme dans Android est préférable à une forme dans Photoshop.
Correct, créer un dessin est préférable car vous pouvez changer la couleur ou la forme avec du code au lieu de créer une nouvelle ressource image, par exemple . Créez une FrameLayout
avec 2 Views
et une TextView
. Le premier fond de vue serait votre anneau extérieur (forme) et le second un cercle limé (forme). Enfin, la dernière View
(plus grand indice z) votre TextView
:
<FrameLayout>
<View/><!-- (outer ring)-->
<View/><!-- (filed circle)-->
<TextView/><!-- (text)-->
</FrameLayout>
<?xml version="1.0" encoding="utf-8"
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:innerRadius="10dp" Android:shape="ring" Android:thickness="2dp" Android:useLevel="false">
<solid Android:color="#dfdfdf" />
</shape>
</item>
</selector>