円を描きます!
xmlでやったり、Canvasを使うんでしょ・・・大きさの設定や位置の設定とか面倒だな・・・と思いきや、結構簡単なんです。
こんな感じ
public class CircleView extends View {
private Paint paint;
public CircleView(Context context, AttributeSet attrs) {
super(context, attrs);
paint = new Paint();
}
public CircleView(Context context) {
super(context);
paint = new Paint();
}
public void setColor(int color){
paint.setColor(getResources().getColor(color));
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
paint.setAntiAlias(true);
canvas.drawCircle(canvas.getHeight() / 2, canvas.getHeight() / 2, (canvas.getWidth() / 2) - 2, paint);
}
}
外からsetColorで色も指定できます!
こんな感じに
circleView.setColor(R.color.white);
onDrawでcanvas.drawCircleを使い円を描きます。
これは、自分自身の大きさを取得し、Viewの真ん中に円を描く指定しています。これだけ
そしてこのクラスをlayoutを定義するxmlから以下のように設定し使います。
<test.ui.widget.CircleView
android:id="@+id/circle_view"
android:layout_width="48dp"
android:layout_height="48dp" />
CircleView circleView = (CircleView) view.findViewById(R.id.circle_view);
circleView.setColor(R.color.black);
こうすると、48dp*48dpのViewの真ん中に黒い円が描かれます。
シンプルで汎用性高いと思います。