Android绘制饼图
时间: 2023-11-03 14:15:53 浏览: 43
Android绘制饼图可以使用Canvas和Paint类来实现。
首先,需要确定饼图的数据。假设有以下数据:{"A": 20, "B": 30, "C": 50},表示A占20%,B占30%,C占50%。
然后,需要计算出每个扇形的角度。总共360度,所以A占20%即72度,B占30%即108度,C占50%即180度。
接下来,使用Canvas和Paint类来绘制扇形。具体实现如下:
```
public class PieChartView extends View {
private Paint mPaint;
private RectF mRectF;
private Map<String, Float> mData;
public PieChartView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mRectF = new RectF();
mData = new HashMap<>();
mData.put("A", 20f);
mData.put("B", 30f);
mData.put("C", 50f);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
float total = 0;
for (float value : mData.values()) {
total += value;
}
float startAngle = 0;
for (Map.Entry<String, Float> entry : mData.entrySet()) {
float sweepAngle = entry.getValue() / total * 360;
mPaint.setColor(getColor(entry.getKey()));
mRectF.set(100, 100, 500, 500);
canvas.drawArc(mRectF, startAngle, sweepAngle, true, mPaint);
startAngle += sweepAngle;
}
}
private int getColor(String key) {
switch (key) {
case "A":
return Color.RED;
case "B":
return Color.GREEN;
case "C":
return Color.BLUE;
default:
return Color.BLACK;
}
}
}
```
在这个例子中,我们使用了HashMap来存储数据,setColor方法根据不同的键值设置不同的颜色。通过计算每个扇形的起始角度和扫过的角度,使用Canvas的drawArc方法画出扇形。
最后,在布局文件中添加PieChartView即可显示饼图。