为MPAndroidChart之RadarChart添加lable添加点击事件

关于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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值