package com.hexonxons.leprawatch.view; import com.hexonxons.leprawatch.R; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; public class CommentOffsetView extends View { private float mCircleSize = 0; private float mCircleMargin = 0; private int mLevel = 0; private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG); public CommentOffsetView(Context context) { super(context); mPaint.setColor(getResources().getColor(R.color.light_blue_500)); mCircleSize = getResources().getDimension(R.dimen.comments_offset_circle_size); mCircleMargin = getResources().getDimension(R.dimen.comments_offset_circle_margin); } public CommentOffsetView(Context context, AttributeSet attrs) { super(context, attrs); mPaint.setColor(getResources().getColor(R.color.light_blue_500)); mCircleSize = getResources().getDimension(R.dimen.comments_offset_circle_size); mCircleMargin = getResources().getDimension(R.dimen.comments_offset_circle_margin); } public CommentOffsetView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mPaint.setColor(getResources().getColor(R.color.light_blue_500)); mCircleSize = getResources().getDimension(R.dimen.comments_offset_circle_size); mCircleMargin = getResources().getDimension(R.dimen.comments_offset_circle_margin); } public void setCommentOffset(int level) { mLevel = level; requestLayout(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = (int) (mCircleSize * (mLevel + 1) + mCircleMargin * (mLevel + 2)); int height = (int) (mCircleSize + 2 * mCircleMargin); super.onMeasure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); } @Override protected void onDraw(Canvas canvas) { int cx = (int) (mCircleMargin + mCircleSize / 2); int cy = getMeasuredHeight() / 2; for(int i = -1; i < mLevel; ++i) { canvas.drawCircle(cx, cy, mCircleSize / 2, mPaint); cx += (mCircleSize + mCircleMargin); } super.onDraw(canvas); } }