如何在另一个戒指内画一个戒指

时间:2017-02-21 13:28:00

标签: android xml draw geometry ring

我必须在圈内展示图标,我试图在另一个戒指内画一个戒指,但我不能这样做,当我尝试它是尴尬的位置我怎么能这样做

I tried to do like this but i can't

我的代码

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Larger blue circle in back -->
<item>
    <shape android:shape="oval">
        <solid android:color="#f00"/>
        <size
            android:width="15dp"
            android:height="15dp"/>
    </shape>
</item>
<!-- Smaller red circle in front -->
<item>
    <shape android:shape="oval">
        <!-- transparent stroke = larger_circle_size - smaller_circle_size -->
        <stroke android:color="@android:color/transparent"
            android:width="10dp"/>
        <solid android:color="#fff"/>
        <size
            android:width="1dp"
            android:height="1dp"/>
    </shape>
</item>
<item>
    <shape android:shape="oval">
        <!-- transparent stroke = larger_circle_size - smaller_circle_size -->
        <stroke android:color="@android:color/transparent"
            android:width="11dp"/>
        <solid android:color="#f00"/>
        <size
            android:width="1dp"
            android:height="1dp"/>
    </shape>
</item>

4 个答案:

答案 0 :(得分:1)

试试我的代码。您可以根据您的要求重写值。 将此drawable添加到任何背景时,请确保该视图是正方形。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:left="6dip"
    android:right="6dip">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <stroke
            android:width="3dip"
            android:color="#f00" />
    </shape>

</item>

<item
    android:bottom="80dip"
    android:left="80dip"
    android:right="80dip"
    android:top="80dip">

    <shape android:shape="oval">
        <stroke
            android:width="1dip"
            android:color="#0f0" />
    </shape>
</item>

</layer-list>

修改添加了图片 This what I get.

答案 1 :(得分:1)

尝试使用Canvas绘制它:

DisplayMetrics

你应该调整一些数字。 Bitmap仅用于转换dp中的大小(而不是像素)。完成后,如果您需要将BitmapDrawable用于视图(例如作为背景),则可以将doStuff (const T) doStuff (const Param &) 一起使用。

答案 2 :(得分:1)

    <?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:width="200dp"
                android:height="200dp" />
            <solid android:color="@android:color/transparent" />
            <stroke android:color="#ff0000" android:width="5dp"/>
        </shape>
    </item>

    <item
        android:left="5dp"
        android:top="5dp"
        android:right="5dp"
        android:bottom="5dp">

        <shape android:shape="oval">
            <solid android:color="@android:color/transparent" />
            <stroke android:color="#5BB534" android:width="5dp"/>
        </shape>
    </item>
</layer-list>

答案 3 :(得分:0)

试试这段代码

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:left="3dp"
    android:right="3dp">
    <shape android:shape="oval">
        <stroke android:width="5dp"
            android:color="@android:color/holo_red_dark">

        </stroke>
    </shape>
</item>
<item
    android:bottom="10dp"
    android:left="10dp"
    android:right="10dp"
    android:top="10dp">
    <shape android:shape="oval">
        <stroke android:width="10dp"
            android:color="@android:color/holo_green_dark">

        </stroke>
    </shape>
</item>