Comment créer forme d'anneau dessinable dans android?
avec ce code je reçois juste une frontière:
<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 faire un anneau de forme comme ci-dessous l'image :
5 réponses
2DP anneau externe avec un espace 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>
L'anneau dessinable 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 drawable par tous les moyens plus utile que les images statiques, ils peuvent être correctement mis à l'échelle sans besoin de .9 bibliothèque ou ensemble générateur de différentes tailles de Gimp, Photoshop
je pense qu'utiliser une forme dans android est mieux qu'une forme dans photoshop.
Corriger, la création d'un drawable c'est mieux parce que vous pouvez changer la couleur ou de la forme avec le code au lieu de créer une nouvelle ressource d'image, par exemple.
Créer un FrameLayout
avec 2 Views
et TextView
. La première vue en arrière-plan serait votre anneau externe (forme) et la seconde un cercle déposé (forme). Enfin, la dernière View
(plus grand z-index) votre TextView
:
<FrameLayout>
<View/><!-- (outer ring)-->
<View/><!-- (filed circle)-->
<TextView/><!-- (text)-->
</FrameLayout>
<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>
<?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>