关于RadarChart
先贴上MPAndroidChart 的GitHub上地址:https://github.com/PhilJay/MPAndroidChart
RadarChart的使用这里不做介绍,如有需要请自行查阅!
直奔主题,查看RadarChart的监听方法,仅仅提供了OnChartValueSelectedListener方法,改方法仅能作用于图形上的点击事件,并不能实现lable点击事件(及RadarChart的x轴点击事件),所以需要自己实现其方法;
分析
想要实现lable点击事件,我们可以实现RadarChart的setOnTouchListener()方法,从触摸的位置判断点击区域是否在RadarChart的文字区域,查看RadarChat源码,发现RadarChat的lable绘制主要依靠XAxisRendererRadarChart类实现,
其中drawLable方法则是调用MPAndroidChart中的Util方法
参照其源码的实现方式,可以计算每个lable的绘制区域Rect及起始绘制点,
/**
* 计算位置
* @param compositeRadar
* @return
*/
public static List<RadarPointBean> computePosition(RadarChart compositeRadar) {
List<RadarPointBean> pointBeans = new ArrayList<>();
XAxis xAxis = compositeRadar.getXAxis();
final float labelRotationAngleDegrees = xAxis.getLabelRotationAngle();
final MPPointF drawLabelAnchor = MPPointF.getInstance(0.5f, 0.25f);
float sliceangle = compositeRadar.getSliceAngle();
float factor = compositeRadar.getFactor();
MPPointF center = compositeRadar.getCenterOffsets();
MPPointF pOut = MPPointF.getInstance(0, 0);
for (int i = 0; i < compositeRadar.getData().getMaxEntryCountSet().getEntryCount(); i++) {
String label = xAxis.g