自定义环形图表
前言: Android开发中,原生的控件只能满足大多时候的需求,对于一些特殊的样式需要自定义控件去实现,接下来实现一个环形的图标,需要用到的关键类
Paint
,RectF
,Matrix
,Path
基本思路
1.圆环
可以看到圆环有不通过的扇形区域,我们可以理解画两个圆弧然后首尾连接就可以形成该形状
Path path = new Path();
path.addArc(mMaxRect, startAngle, allData.get(i).getAngle());
path.arcTo(mMinRect, startAngle + allData.get(i).getAngle(), -allData.get(i).getAngle());
path.close();
2.画线
调用drawLine()
方法
canvas.drawLine(startX, startY, endX, endY, mPaint);
3.画文字
换文字要注意基类线的位置
mPaint.setTextAlign(Paint.Align.LEFT);
canvas.drawText(tmpText, endX + defaultS, endY + mTmpRect.height() / 2, mPaint);
所有代码
/**
* Description:环形饼状图
* Created by Buuu on 2018/04/27.
*/
public class CirclePieChart extends View {
private List<PieChartPart> allData;
private Paint mPaint;
private RectF mMinRect;
private RectF mMaxRect;
private Matrix mMatrix;
private List<Path> mPathsList;
private int mWH;
private int mMaxWH;
private int defaultSpace = 250;//周围宽度
private float startAngle = 0f; //初始角度
private float lineLength = 50; //指示线的长度
public CirclePieChart(Context context) {
this(context, null);
}