Можно ли создать прогресс-бар в форме дуги в Android? - PullRequest
2 голосов
/ 06 февраля 2012

Мне нужно создать индикатор в форме дуги. я должен создать собственное представление для этого? Или с помощью onDraw() метода класса ProgressBar я могу выполнить эту вещь? Я также хочу добавить маркер на этот индикатор прогресса, как термометр. Пожалуйста, предложите мне любую идею. Благодаря.

Примерно так:

protected synchronized void onDraw(Canvas canvas) {

    int progress = this.getProgress();
    int maxProgress = this.getMax();

    //calc the progress to angles 
    float angleProgress = progress * 360 / maxProgress;

    //create and set the arc paint 
    Paint arcPaint = new Paint(); 
    arcPaint.setColor(0xff800000); 
    arcPaint.setAntiAlias(true); 
    arcPaint.setStyle(Style.FILL);

    Rect arcRect = new Rect(); this.getDrawingRect(arcRect);
    canvas.drawArc(new RectF(arcRect), -90, angleProgress,true, arcPaint); 
}

Для проверки проверьте это изображение формы дуги прогрессбар http://i.stack.imgur.com/FY0dq.png

1 Ответ

1 голос
/ 06 февраля 2012

Стандартный виджет ProgressBar нелегко настроить, даже для значительно менее масштабных изменений, чем этот.По моему мнению, он не предлагает вам никаких ценных действий в этом контексте, кроме как в качестве носителя для минимальных, максимальных и текущих значений.Это также приносит с собой нежелательные функциональные возможности, такие как неопределенное состояние.

Создайте пользовательское представление, расширив View и реализовав onDraw () - как у вас есть - и onMeasure ().

...