自定义视图Android上的错误笔画宽度绘制圆圈

时间:2015-11-27 08:52:00

标签: android drawing android-custom-view

我在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);

}

但是当我运行结果时会像这样

enter image description here

我想要像这样

enter image description here

我的代码有什么问题?

1 个答案:

答案 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方法中调用) 无论如何,这是设置相同尺寸的宽度和高度的好方法。