Android 多圆形状

Android 多圆形状,android,Android,我想在颜色2的圆圈内画一个颜色1的圆圈。它们都有笔划,内部是透明的。这应该用作按钮的背景 类似这样的东西(但绿色和红色是相邻的-中间没有间隙。对不起,我没有任何图形程序可以绘制它们,所以它们是相邻的。) 有没有一种方法可以在XML中实现这一点 我曾考虑使用shape XML进行此操作,但层是按比例缩放的,因此层彼此重叠,因此只有一种颜色可见。尝试以下操作: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:and

我想在颜色2的圆圈内画一个颜色1的圆圈。它们都有笔划,内部是透明的。这应该用作按钮的背景

类似这样的东西(但绿色和红色是相邻的-中间没有间隙。对不起,我没有任何图形程序可以绘制它们,所以它们是相邻的。)

有没有一种方法可以在XML中实现这一点


我曾考虑使用shape XML进行此操作,但层是按比例缩放的,因此层彼此重叠,因此只有一种颜色可见。

尝试以下操作:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <size android:height="10dp" android:width="10dp"/>
            <stroke
                android:width="2dp"
                android:color="#FF0000"
                />
        </shape>
    </item>
    <item>
        <shape android:shape="oval">
            <stroke
                android:width="1dp"
                android:color="#00FF00"
                />
        </shape>
    </item>
</layer-list>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <stroke
                android:width="4dp"
                android:color="@android:color/holo_red_dark" />
        </shape>
    </item>
    <item>
        <inset android:inset="4dp">
            <shape android:shape="oval">
                <stroke
                    android:width="4dp"
                    android:color="@android:color/holo_green_dark" />
            </shape>
        </inset>
    </item>
</layer-list>
<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="@drawable/red_green" />


您可以更改
大小
元素的
宽度
高度
,以获得不同的环宽。

您可以通过定义两个可绘制资源来实现这一点,这两个资源都使用不同的笔划颜色循环,并将它们放在一个可绘制的图层列表中,通过不同的设置,您可以获得所需的效果:

内圈Inner.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke android:color="@color/colorRed"
        android:width="2dp"/>

</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke android:color="@color/colorGreen"
        android:width="2dp"/>

</shape>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/outer"
        android:right="0dp"
        android:top="0dp"
        android:bottom="0dp"
        android:left="0dp"
        android:gravity="center"/>
    <item android:drawable="@drawable/inner"
        android:right="4dp"
        android:top="4dp"
        android:bottom="4dp"
        android:left="4dp"
        android:gravity="center"/>

</layer-list>

外圈Outer.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke android:color="@color/colorRed"
        android:width="2dp"/>

</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke android:color="@color/colorGreen"
        android:width="2dp"/>

</shape>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/outer"
        android:right="0dp"
        android:top="0dp"
        android:bottom="0dp"
        android:left="0dp"
        android:gravity="center"/>
    <item android:drawable="@drawable/inner"
        android:right="4dp"
        android:top="4dp"
        android:bottom="4dp"
        android:left="4dp"
        android:gravity="center"/>

</layer-list>

按钮背景background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke android:color="@color/colorRed"
        android:width="2dp"/>

</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke android:color="@color/colorGreen"
        android:width="2dp"/>

</shape>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/outer"
        android:right="0dp"
        android:top="0dp"
        android:bottom="0dp"
        android:left="0dp"
        android:gravity="center"/>
    <item android:drawable="@drawable/inner"
        android:right="4dp"
        android:top="4dp"
        android:bottom="4dp"
        android:left="4dp"
        android:gravity="center"/>

</layer-list>

这是最终的结果


您使用带有插图的图层列表,以避免内圈从外圈潜伏出来,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <size android:height="10dp" android:width="10dp"/>
            <stroke
                android:width="2dp"
                android:color="#FF0000"
                />
        </shape>
    </item>
    <item>
        <shape android:shape="oval">
            <stroke
                android:width="1dp"
                android:color="#00FF00"
                />
        </shape>
    </item>
</layer-list>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <stroke
                android:width="4dp"
                android:color="@android:color/holo_red_dark" />
        </shape>
    </item>
    <item>
        <inset android:inset="4dp">
            <shape android:shape="oval">
                <stroke
                    android:width="4dp"
                    android:color="@android:color/holo_green_dark" />
            </shape>
        </inset>
    </item>
</layer-list>
<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="@drawable/red_green" />

按如下方式设置按钮的大小和背景:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <size android:height="10dp" android:width="10dp"/>
            <stroke
                android:width="2dp"
                android:color="#FF0000"
                />
        </shape>
    </item>
    <item>
        <shape android:shape="oval">
            <stroke
                android:width="1dp"
                android:color="#00FF00"
                />
        </shape>
    </item>
</layer-list>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <stroke
                android:width="4dp"
                android:color="@android:color/holo_red_dark" />
        </shape>
    </item>
    <item>
        <inset android:inset="4dp">
            <shape android:shape="oval">
                <stroke
                    android:width="4dp"
                    android:color="@android:color/holo_green_dark" />
            </shape>
        </inset>
    </item>
</layer-list>
<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="@drawable/red_green" />

然后看起来是这样的:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <size android:height="10dp" android:width="10dp"/>
            <stroke
                android:width="2dp"
                android:color="#FF0000"
                />
        </shape>
    </item>
    <item>
        <shape android:shape="oval">
            <stroke
                android:width="1dp"
                android:color="#00FF00"
                />
        </shape>
    </item>
</layer-list>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <stroke
                android:width="4dp"
                android:color="@android:color/holo_red_dark" />
        </shape>
    </item>
    <item>
        <inset android:inset="4dp">
            <shape android:shape="oval">
                <stroke
                    android:width="4dp"
                    android:color="@android:color/holo_green_dark" />
            </shape>
        </inset>
    </item>
</layer-list>
<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="@drawable/red_green" />