为了在Android中绘制圆形和饼状图,我们可以使用AChartEngine Android框架,如此处所示。
但是,如何在Android中绘制部分水平(或垂直)填充的圆形呢?我是指例如根据Java代码中指定的百分比从底部到顶部填充的圆形。
以下是我们所需内容的预览:
为了在Android中绘制圆形和饼状图,我们可以使用AChartEngine Android框架,如此处所示。
但是,如何在Android中绘制部分水平(或垂直)填充的圆形呢?我是指例如根据Java代码中指定的百分比从底部到顶部填充的圆形。
以下是我们所需内容的预览:
尝试使用这个库 Circle Progress。
以下是该库作者提供的示例:
<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);
}