Android绘制饼图
时间: 2023-11-03 16:59:30 浏览: 44
在 Android 中,我们可以使用 Canvas 和 Paint 对象来绘制饼图。以下是一个简单的示例:
1. 创建一个继承自 View 的自定义视图类 PieChartView。
2. 在 PieChartView 类中,定义一个 PieChartData 类来存储要显示的数据。
```
public class PieChartData {
public int[] colors;
public float[] values;
public String[] labels;
public PieChartData(int[] colors, float[] values, String[] labels) {
this.colors = colors;
this.values = values;
this.labels = labels;
}
}
```
3. 在 PieChartView 类中,添加一个 setChartData() 方法来设置要显示的数据。
```
public void setChartData(PieChartData data) {
mData = data;
invalidate(); // 通知视图重新绘制
}
```
4. 在 PieChartView 类中,覆盖 onDraw() 方法来绘制饼图。
```
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mData == null) {
return;
}
float centerX = getWidth() / 2;
float centerY = getHeight() / 2;
float radius = Math.min(centerX, centerY) * 0.8f;
RectF rectF = new RectF(centerX - radius, centerY - radius, centerX + radius, centerY + radius);
float startAngle = 0;
float totalValue = sum(mData.values);
for (int i = 0; i < mData.values.length; i++) {
float sweepAngle = mData.values[i] / totalValue * 360;
mPaint.setColor(mData.colors[i]);
canvas.drawArc(rectF, startAngle, sweepAngle, true, mPaint);
startAngle += sweepAngle;
}
}
```
其中,mData 是 PieChartData 对象,mPaint 是 Paint 对象,sum() 方法用来计算数据的总和。
5. 在 Activity 中,创建 PieChartData 对象并设置到 PieChartView 中。
```
PieChartData data = new PieChartData(
new int[] {Color.RED, Color.BLUE, Color.GREEN},
new float[] {20f, 30f, 50f},
new String[] {"Red", "Blue", "Green"}
);
PieChartView pieChartView = findViewById(R.id.pie_chart);
pieChartView.setChartData(data);
```
这样就可以在 Activity 中显示一个简单的饼图了。当然,你可以根据需要自定义样式和动画效果。