web-dev-qa-db-ja.com

境界線のある透明な円

私はAndroidでXMLを使用して境界線のみで円を作成しようとしています:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval" >

<stroke Android:width="1dp"
    Android:color="#000000"/>

</shape>

私が使用したコードは上記に掲載されています。ただし、リングではなく、固体ディスクを取得します。 canvasではなくXMLのみを使用して出力を取得したいと思います。何が間違っていますか?

ありがとう。

編集:以下の回答のおかげで動作するようになりました。最終的なコードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:innerRadius="0dp"
    Android:shape="ring"
    Android:thicknessRatio="1.9"
    Android:useLevel="false" >

    <solid Android:color="@Android:color/transparent" />

    <size Android:width="100dp"
     Android:height="100dp"/>

    <stroke Android:width="1dp"
    Android:color="#FFFFFF"/>

</shape>
65
Anirudh

このようなものを試してください

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:innerRadius="0dp"
    Android:shape="ring"
    Android:thicknessRatio="2"
    Android:useLevel="false" >
    <solid Android:color="@Android:color/transparent" />

    <stroke
        Android:width="2dp"
        Android:color="@Android:color/darker_gray" />
</shape>

更新:Android:thicknessRatio="2"を作成して完全な円を表示(Nexus 5-Lollipopを使用)

157
stinepike

これを使用して動作します

<?xml version="1.0" encoding="utf-8"?>  
     <shape xmlns:Android="http://schemas.Android.com/apk/res/Android"                                                                                                                                                     
   Android:shape="oval" >

<gradient
    Android:centerX=".6"
    Android:centerY=".40"
    Android:endColor="@Android:color/transparent"
    Android:gradientRadius="20"
    Android:startColor="@Android:color/transparent"
    Android:type="radial" />

<stroke
    Android:width="1dp"
    Android:color="#FFFFFF" />

<size
    Android:height="100dp"
    Android:width="100dp" />

</shape>
29
anupam sharma

ホロー

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

いっぱい

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">
    <corners Android:radius="100dp" />
    <solid Android:color="@Android:color/white" />
</shape>
10
Hitesh Sahu

Vector drawablesを使用できる場合は、これを試してください

<vector Android:height="24dp" Android:viewportHeight="512.0"
    Android:viewportWidth="512.0" Android:width="24dp" xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <path Android:fillColor="#FFFFFF" Android:fillType="evenOdd"
        Android:pathData="M0,0L512,0L512,512L0,512L0,0ZM256,511C396.8,511 511,396.8 511,256C511,115.2 396.8,1 256,1C115.2,1 1,115.2 1,256C1,396.8 115.2,511 256,511Z"
        Android:strokeColor="#00000000" Android:strokeWidth="1"/>
</vector>
3
Hector

Android透過型の組み込み値として@Android:color/transparentを使用するか、#0000または#00000000を使用できます

上記の場合、4桁で最初にアルファが始まり、8桁で2桁がアルファと同じでした。

デフォルトのアルファ値よりも3桁または6桁だけ多く色を与えた場合、4桁または8桁の値を渡すことにより、その色の値のアルファを設定します。

2
Pratik
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:tools="http://schemas.Android.com/tools"
    xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape Android:shape="oval" >

            <stroke
                Android:width="4dp"
                Android:color="@color/colorPrimaryDark" />
            <corners Android:radius="0dp" />
        </shape>
    </item>
    <item
        Android:top="1dp"
        Android:bottom="1dp"
        Android:left="1dp"
        Android:right="1dp">

        <shape Android:shape="oval">
            <solid Android:color="@color/colorRed" />
            <size Android:height="@dimen/_100sdp"
                Android:width="@dimen/_100sdp"></size>
        </shape>

    </item>

</layer-list>
1
Mohsinali

ストローク効果は、必要な色(例では#000)のストロークで透明な楕円を描くことで実現できます。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">
    <solid Android:color="@Android:color/transparent" />
    <stroke
        Android:width="1dp"
        Android:color="#000" />
    <size
        Android:width="40dp"
        Android:height="40dp" />
</shape>
1
Alex Burov

色を#00000000に設定すると、結果は透明になります。将来の開発で変更したい場合は、この方法で行います。たとえば、赤で部分的に透明にしたい場合は、#ff000088になります。最後の2つの数字は不透明度です。将来の変更を簡単にするためにこのようにします。

0
Jack Papel
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape Android:shape="oval" >

        <gradient
            Android:endColor="@Android:color/transparent"
            Android:gradientRadius="20"
            Android:startColor="@Android:color/transparent" />

        <stroke
            Android:width="1dp"
            Android:color="#d9d9d9" />

        <size
            Android:height="100dp"
            Android:width="100dp" />
        </shape>
    </item>

    <item
        Android:bottom="1dp"
        Android:left="1dp"
        Android:right="1dp"
        Android:top="1dp">
        <shape Android:shape="oval" >

            <gradient
                Android:endColor="@Android:color/transparent"
                Android:gradientRadius="20"
                Android:startColor="@Android:color/transparent" />

            <stroke
                Android:width="1dp"
                Android:color="#b3b3b3" />

            <size
                Android:height="100dp"
                Android:width="100dp" />
        </shape>
    </item>
</layer-list>
0
Palak Jain