画一个圆圈,用Android水平填充

画一个圆圈,用Android水平填充,android,canvas,draw,achartengine,pie-chart,Android,Canvas,Draw,Achartengine,Pie Chart,要在Android中绘制圆圈和饼图,我们可以使用Android框架,如图所示 然而,我们如何在Android中绘制部分水平(或垂直)填充的圆圈?我指的是圆形,例如,根据Java代码中指定的百分比从下到上填充 以下是我们所需内容的预览: 试试这个库。 以下是lib作者的一个示例: <com.github.lzyzsd.circleprogress.CircleProgress android:id="@+id/circle_progress" android:layout_m

要在Android中绘制圆圈和饼图,我们可以使用Android框架,如图所示

然而,我们如何在Android中绘制部分水平(或垂直)填充的圆圈?我指的是圆形,例如,根据Java代码中指定的百分比从下到上填充

以下是我们所需内容的预览:

试试这个库。
以下是lib作者的一个示例:

<com.github.lzyzsd.circleprogress.CircleProgress
    android:id="@+id/circle_progress"
    android:layout_marginLeft="50dp"
    android:layout_width="100dp"
    android:layout_height="100dp"
    custom:circle_progress="20"/>


扩展
Drawable
并让您的
draw
方法如下所示:

public void draw(Canvas c) {
    float size = ...; // The size of your circle
    Paint color = new Paint();
    color.setColor(...); // Color of your circle
    c.drawCircle(size / 2, size / 2, size / 2, color);
    Path p = new Path();
    float ratio = ...; // How many of the circle you want to have filled
    float offset = size * (float) Math.sqrt(1-((double) (0.5-ratio) * 2)*((double) (0.5-ratio) * 2)) / 2;
    float angle = (float) Math.asin((double) (0.5-ratio) * 2);
    p.addArc(offset, size * (1-percent), size - offset, size, angle, Math.PI - angle);
    p.close();
    c.drawPath(p, color);
}

我举了一个例子,说明了一种方法。实际上,有两种方法,如果您检查初始帖子的修订历史记录。然而,我的初始答案仅适用于API 19及以上版本。您的答案更好,而且非常简单(一个实用程序类)。谢谢@MikeM。我发现要成功实现和运行这个库/代码有些困难。这个库虽然很详细,但在Android中提供了许多进度表单。谢谢你@Minhtdh。