2

我需要创建一个弧形的进度条。我应该为此创建一个自定义视图吗?或者借助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

4

1 回答 1

1

默认的 ProgressBar 小部件不容易定制,即使是比这明显不那么雄心勃勃的更改。在我看来,除了充当最小值、最大值和当前值的载体之外,它在这种情况下没有为您提供任何有价值的行为。它还带来了不需要的功能,例如“不确定”状态。

通过扩展 View 并实现 onDraw() 和 onMeasure() 来创建自定义视图。

于 2012-02-06T11:42:25.150 回答