目录
1 实现:
Step 1:分别新建5个shape资源文件。
Step 2:内容如下,根据个人需求更改颜色、半径、尺寸。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--图形颜色-->
<solid android:color="#36a9ce"/>
<!--图形半径-->
<corners android:radius="6dp"/>
<!--图形尺寸-->
<size android:width="12dp"
android:height="12dp"/>
</shape>
Step 3:添加一组顶点值数据,如顶点值为100,则这组数据的所有值都为100,然后为每个数组设置一个图标(前面创建的shape资源文件),再将数据间的连线隐藏掉且不绘制数据值。
/**
* 创建一组虚拟图表数据
* @return
*/
private RadarDataSet drawAngleCircle() {
List<RadarEntry> yVals = new ArrayList<>();
// 各个顶点的图标资源
int[] drawables = new int[]{
R.drawable.shape_circle_1,
R.drawable.shape_circle_2,
R.drawable.shape_circle_3,
R.drawable.shape_circle_4,
R.drawable.shape_circle_5,
};
for (int i = 0; i < 5; i++) {
RadarEntry radarEntry = new RadarEntry(100f);
radarEntry.setIcon(getResources().getDrawable(drawables[i])); // 为每个数据设置一个图标
yVals.add(radarEntry);
}
RadarDataSet ds = new RadarDataSet(yVals, "");
ds.setColors(Color.TRANSPARENT); // 不显示数据连线
ds.setDrawValues(false); // 不绘制数据值
return ds;
}
2 效果:
特别注意:这种方式比较简单,但如果辅助绘制圆点的数据控制不好的话,圆点位置比较容易失控,如果对于精准性要求较高的话最好采用“重写RadarChart控件添加顶角圆点绘制方案”。
那如何合理控制辅助绘制的圆点呢?
1.把控数据最大值作为顶角,比如这里所有数据的最大取值为100,否则圆点位置会绘制到图表内部。
yAxis.setAxisMaximum(80f); // 为什么是80不是100呢,可以试一下100就知道它是不是有自己的想法
2.保证图表中心点是从0开始,否则圆点位置会绘制到图表外部。
yAxis.setAxisMinimum(0f);
或者可以再加一组辅助的假数据,所有值都为0,就可以保证从0开始绘制也看不见。
List<RadarEntry> yVals = new ArrayList<>();
for (int i = 0; i < 5; i++) {
yVals.add(new RadarEntry(0));
}
RadarDataSet ds = new RadarDataSet(yVals, lable);
ds.setDrawValues(false);
dataSets.add(ds);
如果不是将圆点绘制在图表的顶点,而是想绘制到每个真实数据值的顶点,把绘制圆点的那组数据值保持与真实数据顶点的值一致即可。
雷达图的使用教程:https://blog.csdn.net/Honiler/article/details/90407390