我在android中编写自定义视图。我想绘制一个圆圈,覆盖我视图的所有宽度和高度。这是我的代码
private void init() {
bgpaint = new Paint();
bgpaint.setColor(bgColor);
bgpaint.setAntiAlias(true);
bgpaint.setStyle(Paint.Style.STROKE);
bgpaint.setStrokeWidth(strokeWidth);
rect = new RectF();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// draw background circle anyway
int strokeWidth = 50;
rect.set(strokeWidth, strokeWidth, getwidth()- strokeWidth,
getheight() - strokeWidth);
canvas.drawArc(rect, -90, 360, fill, bgpaint);
}
但是当我运行结果时会像这样
我想要像这样
我的代码有什么问题?
答案 0 :(得分:1)
Probem正在设置矩形的坐标。您必须设置笔画宽度的一半,而不是整个笔画宽度。
float left=strokeWidth / 2;
float top=strokeWidth / 2;
float right=minDimen - strokeWidth/ 2;
float bottom=minDimen - strokeWidth / 2;
rect.set(left, top, right,bottom);
因为它涉及到圆圈,我认为你的circleView的宽度和高度是相同的尺寸。那是我的代码中的minDimen。因为我使用那两个较小的维度。
final int minDimen = Math.min(width, height);
setMeasuredDimension(minDimen, minDimen);
(必须在onMeasure方法中调用) 无论如何,这是设置相同尺寸的宽度和高度的好方法。