【问题标题】:Is it possible to create a progressbar in arc shape in android?是否可以在android中创建弧形进度条?
【发布时间】:2012-02-06 11:24:48
【问题描述】:

我需要创建一个弧形的进度条。我应该为此创建一个自定义视图吗?或者借助 ProgressBar 类的onDraw() 方法,我可以执行此操作吗?我还想在这个进度条上添加标记,比如温度计。请建议我任何想法。谢谢。

类似这样的:

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

对于参考检查此图像弧形进度条

【问题讨论】:

  • 这样的东西怎么样:phrogz.net/tmp/canvas_gauge.html 它是用 Javascript 编写的,但使用 HTML5 画布。如果它是相似的,你可以通过查看它的源来很好地理解如何绘制你的小部件。

标签: android android-progressbar


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多