最低限の実装。キャンバスにサイズにある程度あった円ができる。
円の太さや、キャンバスからの位置を変更しようと思うと、thickness、thicknessRatio、innerRadius、innerRadiusRatioを調整する必要がある。
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="ring" android:useLevel="false" > <size android:width="300dp" android:height="300dp" /> ←キャンバスのサイズになる <stroke android:width="5dp" android:color="#2196F3" /> ←線の太さと色 <solid android:color="@color/colorAccent"/> ←塗りつぶしの色 </shape>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="ring" android:useLevel="false" android:thicknessRatio="6" ←ここを変えてみる > <size android:width="300dp" android:height="300dp" /> <stroke android:width="5dp" android:color="#2196F3" /> <solid android:color="@color/colorAccent"/> </shape>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="ring" android:useLevel="false" android:innerRadiusRatio="15" ←ここを変える > <size android:width="300dp" android:height="300dp" /> <stroke android:width="5dp" android:color="#2196F3" /> <solid android:color="@color/colorAccent"/> </shape>
角度をつけたlineを重ねることでバツが作れる。
角度をつけるにはandroid:fromDegrees
、重ねるにはlayer-list
を使用する。
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <rotate android:fromDegrees="45" > <shape android:shape="line" android:useLevel="false" android:thicknessRatio="15" > <size android:width="150dp" android:height="150dp" /> <stroke android:color="@color/colorAccent" android:width="10dp"/> </shape> </rotate> </item> <item> <rotate android:fromDegrees="135" > <shape android:shape="line" android:useLevel="false" android:thicknessRatio="15" > <size android:width="150dp" android:height="150dp" /> <stroke android:color="@color/colorAccent" android:width="10dp"/> </shape> </rotate> </item> </layer-list>