使用 android 的图层列表绘制图像

drawing images with layer-lists for android

我一直在尝试创建一个类似于此图像的矢量作为 android 可绘制对象 XML,但我遇到了一些问题。

我正在尝试将其创建为 layer-list,这样我就可以拥有多个图元(一个圆形和 4 个带圆角的矩形充当半圆)。

这是我的 XML 可绘制对象代码

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:right="0dp" android:left="0dp">
        <shape
            android:shape="rectangle">

            <solid android:color="#FFFFFF"/>

            <corners
                android:bottomRightRadius="20dp"
                android:bottomLeftRadius="20dp"/>
        </shape>
    </item>
    <item android:right="-80dp" android:left="0dp" android:height="20dp" android:width="20dp">
        <shape
            android:shape="rectangle">
            <solid android:color="#FFFFFF"/>
            <corners
                android:bottomRightRadius="20dp"
                android:bottomLeftRadius="20dp"/>
        </shape>
    </item>
    <item android:right="-80dp" android:left="0dp" android:height="20dp" android:width="20dp">
        <shape
            android:shape="rectangle">
            <solid android:color="#FFFFFF"/>
            <corners
                android:bottomRightRadius="20dp"
                android:bottomLeftRadius="20dp"/>
        </shape>
    </item>
    <item android:right="-80dp" android:left="0dp" android:height="20dp" android:width="20dp">
        <shape
            android:shape="rectangle">
            <solid android:color="#FFFFFF"/>
            <corners
                android:bottomRightRadius="20dp"
                android:bottomLeftRadius="20dp"/>
        </shape>
    </item>
    <item android:right="-80dp" android:left="0dp" android:height="20dp" android:width="20dp">
        <shape
            android:shape="rectangle">
            <solid android:color="#FFFFFF"/>
            <corners
                android:bottomRightRadius="20dp"
                android:bottomLeftRadius="20dp"/>
        </shape>
    </item>
    <item android:right="00dp" android:left="00dp" android:height="40dp" android:width="40dp">
        <shape android:shape="oval">
            <solid android:color="#000000"/>
        </shape>
    </item>
</layer-list>

所以问题是我无法让它们按我想要的方式展开。此刻他们都在彼此之上。当我尝试调整其中一个的大小时,由于某种原因它们都采用相同的大小,无法创建半圆。此外,当我尝试使用 android:top 等移动它们时,它会拖动其他的,所以我有点迷失了我应该如何创建我正在寻找的形状。

感谢任何帮助。

我修改了你的示例,希望这对你有帮助

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:gravity="left|center_vertical" android:right="35dp">
    <shape
        android:shape="rectangle">
        <size android:height="10dp"
            android:width="10dp"/>
        <solid android:color="#2962FF"/>
        <corners
            android:topLeftRadius="10dp"
            android:bottomLeftRadius="10dp"/>
    </shape>
</item>
<item android:gravity="right|center_vertical"  android:left="35dp">
    <shape
        android:shape="rectangle">
        <size android:width="10dp"
            android:height="10dp"/>
        <solid android:color="#2962FF"/>
        <corners
            android:bottomRightRadius="10dp"
            android:topRightRadius="10dp"/>
    </shape>
</item>

<item android:gravity="top|center_horizontal"  android:bottom="35dp">
    <shape
        android:shape="rectangle">
        <size android:width="10dp" android:height="10dp"/>
        <solid android:color="#2962FF"/>
        <corners
            android:topRightRadius="10dp"
            android:topLeftRadius="10dp"/>
    </shape>
</item>

<item android:gravity="bottom|center_horizontal" android:top="35dp">
    <shape android:shape="rectangle">
    <size android:height="10dp"
        android:width="10dp"/>
        <solid android:color="#2962FF"/>
        <corners
            android:bottomRightRadius="20dp"
            android:bottomLeftRadius="20dp"/>
    </shape>
</item>

<item android:gravity="center_horizontal|center_vertical">
    <shape android:shape="oval">
        <size android:height="20dp"
            android:width="20dp"/>
        <solid android:color="#000000"/>
    </shape>
</item>


</layer-list>