如何在android中创建环形可绘制?

S.M*_*ian 23 android shape

使用此代码我只得到一个边框:

<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> 
Run Code Online (Sandbox Code Playgroud)

如何制作如下图所示的戒指形状:

在此输入图像描述

tac*_*lux 45

2dp外圈,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>
Run Code Online (Sandbox Code Playgroud)


Mor*_*Koh 9

You will need to create a drawable and set it as a background.

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>
Run Code Online (Sandbox Code Playgroud)

Preview

环形可绘制预览


sig*_*ami 5

Ring drawable 是元素的并列,使用 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>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Xml drawable 比静态图像更有用,它们可以正确缩放,无需 .9 库或从 Gimp、Photoshop 生成不同大小的集合