Android 如何生成带有外圈的圆形状

Android 如何生成带有外圈的圆形状,android,xml,android-layout,kotlin,material-design,Android,Xml,Android Layout,Kotlin,Material Design,如何生成视图,如下所示 我尝试将笔划添加到cardView(材质cardView)并在recyclerView中使用它。我使用了多个视图,下面是外圈的xml代码 <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://

如何生成视图,如下所示

我尝试将笔划添加到cardView(材质cardView)并在recyclerView中使用它。我使用了多个视图,下面是外圈的xml代码

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_marginStart="6dp"
    android:layout_marginEnd="6dp"
    android:gravity="center">

    <com.google.android.material.circularreveal.cardview.CircularRevealCardView
        android:id="@+id/selectedCardColor"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:visibility="visible"
        app:cardBackgroundColor="@color/app_color_white"
        app:strokeColor="@color/app_color_green"
        app:strokeWidth="1dp"
        app:cardCornerRadius="28dp"
        app:cardPreventCornerOverlap="true"
        app:cardUseCompatPadding="false">

        <com.google.android.material.circularreveal.cardview.CircularRevealCardView
            android:id="@+id/selectedCardInnerColor"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_gravity="center"
            android:layout_margin="6dp"
            app:cardBackgroundColor="@color/app_color_green"
            app:cardCornerRadius="28dp"
            app:cardPreventCornerOverlap="true"
            app:cardUseCompatPadding="false" />
    </com.google.android.material.circularreveal.cardview.CircularRevealCardView>
</LinearLayout>

还有圆形的代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/parent"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp">

<com.google.android.material.card.MaterialCardView
    android:id="@+id/unSelectedCardColor"
    android:layout_width="35dp"
    android:layout_height="35dp"
    android:layout_marginTop="3dp"
    android:layout_marginBottom="3dp"
    app:cardBackgroundColor="@color/app_color_green"
    app:cardCornerRadius="28dp"
    app:cardPreventCornerOverlap="true"
    app:cardUseCompatPadding="false" />
</LinearLayout>

它只适用于pie(android 9)及以上版本。其他设备如下所示:


环应显示在选定视图上。我应该能够通过编程更改颜色。谢谢。

如果它有效,请尝试一下……在您的可绘图文件夹中制作一个ring.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="20dp" android:left="20dp"  android:bottom="20dp"  android:right="20dp" >
        <shape >
            <solid android:color= "#FF0000"/>
            <corners android:radius="300dp"/>
        </shape>
    </item>
    <item  android:left="40dp"  android:bottom="40dp" android:top="40dp" android:right="40dp"    >
        <shape >
            <solid android:color= "#ffffff"/>

            <corners android:radius="300dp"/>
        </shape>
    </item>
    <item   android:left="60dp"  android:bottom="60dp" android:right="60dp"  android:top="60dp" >
        <shape >
            <gradient
                android:startColor="#00ffff"
                android:endColor="#0000ff"
                android:angle="90"/>
            <corners android:radius="300dp"/>
            <stroke android:width="1dp"/>
        </shape>
    </item>
</layer-list>


请将白色替换为背景色

你可以在任何地方使用它。例如,作为按钮的背景

您可以在第一项中更改戒指的颜色,在最后一项中更改圆形的颜色。



我可以通过编程更改颜色吗?谢谢。我可以通过编程更改颜色吗?谢谢。我会告诉你最新情况的。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="5dp"
    android:left="5dp"
    android:bottom="5dp"
    android:right="5dp" >
    <shape >
        <solid android:color= "#090909"/>
        <corners android:radius="400dp"/>
    </shape>
</item>
<item  android:left="10dp"
    android:bottom="10dp"
    android:top="10dp"
    android:right="10dp">
    <shape >
        <solid android:color= "#ffffff"/>
        <corners android:radius="300dp"/>
    </shape>
</item>
<item
    android:left="20dp"
    android:bottom="20dp"
    android:right="20dp"
    android:top="20dp" >
    <shape
        android:shape="oval">
        <solid
            android:color="#9C27B0"/>
        <size
            android:width="200dp"
            android:height="200dp"/>

    </shape>
</item>