2015-11-27 2 views
1

Я пишу пользовательский вид в Android. Я хочу нарисовать круг, который охватывает всю ширину и высоту моего представления. это мой кодНеверный рисунок ширины штриховки cricle на пользовательском представлении 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

Что проблема с моим кодом?

+0

При вызове 'rect.set' вы должны использовать' strokeWidth/2f', а не 'strokeWidth' – pskink

ответ

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

Поскольку речь идет о круге, я предполагаю, что ваша ширина и высота вашего кругаView одинаковы. Это minDimen в моем коде. Потому что я использую меньший размер этих двух.

final int minDimen = Math.min(width, height); 
setMeasuredDimension(minDimen, minDimen); 

(это должно быть названо в методе onMeasure) В любом случае, это хороший способ, чтобы установить ширину и высоту в тех же размеров.