package com.fastebro.androidrgbtool.widgets; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.support.annotation.NonNull; import android.util.AttributeSet; import android.view.View; import com.fastebro.androidrgbtool.R; /** * Created by danielealtomare on 15/02/15. * Project: rgb-tool */ public class CircleView extends View { private int circleRadius = 20; private int strokeColor; private int strokeWidth = 15; private int fillColor; private int circleGap = 20; public CircleView(@NonNull Context context) { super(context); init(); } public CircleView(@NonNull Context context, @NonNull AttributeSet attrs) { this(context, attrs, 0); init(); } public CircleView(@NonNull Context context, @NonNull AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); TypedArray aTypedArray = context.obtainStyledAttributes(attrs, R.styleable.CircleView, defStyleAttr, 0); strokeColor = aTypedArray.getColor(R.styleable.CircleView_strokeColor, strokeColor); strokeWidth = aTypedArray.getDimensionPixelSize(R.styleable.CircleView_strokeWidth, strokeWidth); fillColor = aTypedArray.getColor(R.styleable.CircleView_fillColor, fillColor); circleRadius = aTypedArray.getDimensionPixelSize(R.styleable.CircleView_circleRadius, circleRadius); circleGap = aTypedArray.getDimensionPixelSize(R.styleable.CircleView_circleGap, circleGap); aTypedArray.recycle(); init(); } public CircleView(@NonNull Context context, int strokeColor, int strokeWidth, int fillColor, int circleRadius, int circleGap) { super(context); this.strokeColor = strokeColor; this.strokeWidth = strokeWidth; this.fillColor = fillColor; this.circleRadius = circleRadius; this.circleGap = circleGap; init(); } private void init() { this.setMinimumHeight(circleRadius * 2 + strokeWidth); this.setMinimumWidth(circleRadius * 2 + strokeWidth); this.setSaveEnabled(true); } @Override public void onDraw(Canvas canvas) { super.onDraw(canvas); int w = this.getWidth(); int h = this.getHeight(); int ox = w / 2; int oy = h / 2; canvas.drawCircle(ox, oy, circleRadius, getStroke()); canvas.drawCircle(ox, oy, circleRadius - circleGap, getFill()); } private Paint getStroke() { Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); p.setStrokeWidth(strokeWidth); p.setColor(strokeColor); p.setStyle(Paint.Style.STROKE); return p; } private Paint getFill() { Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); p.setColor(fillColor); p.setStyle(Paint.Style.FILL); return p; } public int getCircleRadius() { return circleRadius; } public void setCircleRadius(int circleRadius) { this.circleRadius = circleRadius; } public int getStrokeColor() { return strokeColor; } public void setStrokeColor(int strokeColor) { this.strokeColor = strokeColor; } public int getStrokeWidth() { return strokeWidth; } public void setStrokeWidth(int strokeWidth) { this.strokeWidth = strokeWidth; } public int getFillColor() { return fillColor; } public void setFillColor(int fillColor) { this.fillColor = fillColor; } public int getCircleGap() { return circleGap; } public void setCircleGap(int circleGap) { this.circleGap = circleGap; } }