mit diesem Code bekomme ich nur eine Grenze:
<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>
wie kann ich eine Ringform wie in der folgenden Abbildung machen:
2dp Außenring mit 2dp Lücke:
<?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>
Sie müssen eine Zeichenfläche erstellen und als Hintergrund festlegen.
shape_primary_ring.xml
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:innerRadiusRatio="2.5"
Android:shape="ring"
Android:thickness="4dp"
Android:useLevel="false">
<solid Android:color="@color/colorPrimary"/>
</shape>
Vorschau
Ring-Drawable ist die Gegenüberstellung von Elementen, verwenden Sie die Layer-Liste
<?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 ist auf jeden Fall nützlicher als statische Bilder. Sie können korrekt skaliert werden, ohne dass eine .9-Bibliothek oder ein Satz mit unterschiedlichen Größen von Gimp, Photoshop benötigt wird
<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>
Ich denke, eine Form in Android zu verwenden ist besser als eine Form in Photoshop.
Wenn Sie ein Zeichen erstellen, ist es besser, da Sie Farbe oder Form mit Code ändern können, anstatt eine neue Bildressource zu erstellen, z. B. . Erstellen Sie eine FrameLayout
mit 2 Views
und einer TextView
. Der erste Ansichtshintergrund wäre Ihr äußerer Ring (Form) und der zweite ein gefeilter Kreis (Form). Zum Schluss die letzte View
(größerer Z-Index) Ihre 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>