2012-02-06 78 views
2

我需要创建一个弧形的进度条。我应该为此创建一个自定义视图吗?或者在ProgressBar类的onDraw()方法的帮助下,我可以执行这个事情吗?我也想在这个progressBar像温度计上添加标记。请给我建议任何想法。谢谢。是否有可能在android中创建弧形的进度条?

事情是这样的:

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

+0

这样的事情是这样的:http://phrogz.net/tmp/canvas_gauge.html它是用Javascript编写的,但使用HTML5画布。如果它是相似的,你可以通过查看源代码来了解如何绘制小部件。 – Jonathan 2012-02-06 11:37:09

回答

1

默认进度部件是不容易定制,甚至比这显著不那么雄心勃勃的变化。在我看来,它不会为此提供有价值的行为,除了充当最小值,最大值和当前值的载体之外。它还带来了不必要的功能,例如“不确定”状态。

通过扩展视图并实现onDraw() - 像你一样 - 和onMeasure()来创建自定义视图。

相关问题