您可以自定义视图(例如PieProgressView)或自定义Drawable(例如PieProgressDrawable).我采取了定制视图的方法,但是完全可行.
快速浏览Android的ProgressView源代码是一个非常复杂的实现.显然,他们涵盖了所有的基础,但你不必写一些复杂的东西.我们真的只需要两件事情:
>成员跟踪当前进度.
>根据当前进度绘制饼图的方法.
第一个很容易,只需保留一个成员字段来跟踪饼图的当前百分比.数字2有点复杂,但幸运的是,我们可以使用标准的画布绘制方法.
方便的是,Android的Canvas类提供了drawArc()的方法.你可以用它来获得你的饼干效果.假设我们将一个名为mPercent的成员字段的百分比存储为0到1之间的浮点数,则onDraw()方法可能如下所示:
@Override
protected void onDraw(Canvas canvas) {
final float startAngle = 0f;
final float drawTo = startAngle + (mPercent * 360);
// Rotate the canvas around the center of the pie by 90 degrees
// counter clockwise so the pie stars at 12 o'clock.
canvas.rotate(-90f, mArea.centerX(), mArea.centerY());
canvas.drawArc(mArea, startAngle, drawTo, true, mPaint);
// Draw inner oval and text on top of the pie (or add any other
// decorations such as a stroke) here..
// Don't forget to rotate the canvas back if you plan to add text!
...
}
以下是示例应用程序中完成的视图:
编辑
自从发布以来,我决定实际上没有理由实现自定义视图.你可以简单地使用一个drawable,它的level属性可以完成所需要的.我做了gist with the full drawable.