目录
1 实现:
2 效果:
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; }特别注意:这种方式比较简单,但如果辅助绘制圆点的数据控制不好的话,圆点位置比较容易失控,如果对于精准性要求较高的话最好采用“重写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