相信大家都看了之前的新闻,世乒赛日本直播版,中二爆表,马龙的六边形战力图全满。
图是这样的。
于是乎想实现一个自定义view实现类似的效果。 这种图正式名称叫雷达图(Radar Chart),又可称为戴布拉图、蜘蛛网图(Spider Chart),是财务分析 报表的一种。但是现在已经应用到很多领域,特别是竞技体育方面对队伍或者选手的实力分析。
整理了一下思路和查询了一下相关知识,结合前人的代码,实现了自定义雷达图。
下面写一下实现思路:首先我把雷达图分为底层蜘蛛网+内容区,底层蜘蛛网的六个属性和内容区的六个点分别从2个数组去获取数值,接来下只要依次绘制两层图即可。
1.初始化
private int count=6; //六边形,数据个数6 private float angle= (float) (Math.PI/3); //60度 private double[] data={50,50,50,50,50,50,50}; //默认数据 private float maxValue=100; //默认最大值 private String[] titles={"a","b","c","d","e","f"}; //默认标题 private Paint radarPaint; //蜘蛛网画笔 private Paint valuePaint; //内容区画笔 private Paint textPaint; //文字画笔 private float radius; //网格最大半径 private int centerX; //中心X private int centerY; //中心Y public MyRadar(Context context) { this(context,null); } public MyRadar(Context context, AttributeSet attrs) { this(context, attrs,0); } public MyRadar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); }
private void init() { radarPaint=