java 雷达图_Android雷达图(蜘蛛网图),自定义view之雷达图,正五边雷达图,分数图...

最近业务要做分数雷达图,到网上找了很大,原理都差不多,但是要适用自己的业务,还需要微调。下面是我微调后的效果图

6359adfc032a

雷达图蜘蛛网.png

原理很简单

1,确定雷达图中心点的坐标

2,用正三角sin,反三角函数cos计算五个类别的坐标点

3,绘制蜘蛛网

4,绘制直线

5,绘制覆盖区域(包含红点)

下面结合代码给大家讲解下

-1, 下面是需要用到的一些属性

public class RadarView extends View {

//数据个数

private int count = 5;

//成绩圆点半径

private int valueRadius = 8;

//网格最大半径

private float radius;

//中心X

private float centerX;

//中心Y

private float centerY;

//雷达区画笔

private Paint mainPaint;

//文本画笔

private Paint textPaint;

//数据区画笔

private Paint valuePaint;

//标题文字

private List titles;

//各维度分值

private List data;

//数据最大值

private double maxValue = 100;

//弧度

private float angle;

}

2,获取中心点坐标

这个是在view的onSizeChanged方法里获取当前view的宽高,取宽高的小值,然后再找中心点作为雷达图的中心点。这样做的好处是可以使雷达图自适应

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh) {

radius = Math.min(w, h) / 2 * 0.8f;

centerX = w / 2;

centerY = h / 2;

//一旦size发生改变,重新绘制

postInvalidate();

super.onSizeChanged(w, h, oldw, oldh);

}

3,开始绘制

@Override

protected void onDraw(Canvas canvas) {

drawPolygon(canvas);//绘制蜘蛛网

drawLines(canvas);//绘制直线

drawTitle(canvas);//绘制标题

drawRegion(canvas);//绘制覆盖区域

}

下面贴出所有代码,代码里有很详细的注释

package com.example.qcl.demo.radarmap;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Path;

import android.support.annotation.Nullable;

import android.util.AttributeSet;

import android.view.View;

import java.util.ArrayList;

import java.util.List;

/**

* 2018/6/15 11:09

* Created by qcl

* wechat:2501902696

*/

public class RadarView extends View {

//数据个数

private int count = 5;

//成绩圆点半径

private int valueRadius = 8;

//网格最大半径

private float radius;

//中心X

private float centerX;

//中心Y

private float centerY;

//雷达区画笔

private Paint mainPaint;

//文本画笔

private Paint textPaint;

//数据区画笔

private Paint valuePaint;

//标题文字

private List titles;

//各维度分值

private List data;

//数据最大值

private double m

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值