私は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>
このようなものを試してください
<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を使用)
これを使用して動作します
<?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>
ホロー
<?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>
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>
Android透過型の組み込み値として@Android:color/transparent
を使用するか、#0000
または#00000000
を使用できます
上記の場合、4桁で最初にアルファが始まり、8桁で2桁がアルファと同じでした。
デフォルトのアルファ値よりも3桁または6桁だけ多く色を与えた場合、4桁または8桁の値を渡すことにより、その色の値のアルファを設定します。
<?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>
ストローク効果は、必要な色(例では#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>
色を#00000000
に設定すると、結果は透明になります。将来の開発で変更したい場合は、この方法で行います。たとえば、赤で部分的に透明にしたい場合は、#ff000088
になります。最後の2つの数字は不透明度です。将来の変更を簡単にするためにこのようにします。
<?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>