MPAndroidChart的MarkerView和CursorLineChartRenderer同步显示当前触摸的数据点

MarkerView和CursorLineChartRenderer同步显示当前触摸的数据点

触摸图表时,显示竖直的光标线,同时光标线和收益率曲线的交点绘制交点圆圈,交点圆圈跟随MarkerView同步显示,MarkerView显示在哪个数据点,就只需要绘制这个数据点对应的交点圆圈。

问题在于如何确定当前MarkerView显示的是哪个数据点。通常,当用户点击图表时,会触发高亮(Highlight)事件,此时MarkerView会根据高亮的数据点更新显示。因此,可能需要通过高亮事件来获取当前选中的Entry,而不是遍历所有数据集。

接下来,我需要考虑如何在高亮时获取当前的Entry。在MPAndroidChart中,当用户点击图表时,会生成一个高亮对象,其中包含数据集的索引和Entry的索引。可以利用这个信息来获取具体的Entry,而不是遍历所有数据集。

因此,修改思路应该是:在CursorLineChartRenderer中,获取当前的高亮对象,然后根据高亮对象中的数据集索引和Entry索引,获取对应的Entry,并仅绘制该Entry的圆圈。

还需要考虑如何将高亮信息传递到Renderer中。可能需要在自定义的LineChart中设置OnChartValueSelectedListener,当有高亮时,获取对应的Entry的X值,并传递给Renderer,以便在drawDataPoints中只绘制该Entry的圆圈。

总结步骤:

  1. 在LineChart中设置OnChartValueSelectedListener,监听高亮事件。
  2. 当高亮发生时,获取对应的Entry的X值,并传递给Renderer。
  3. 在Renderer的drawDataPoints方法中,仅绘制该X值对应的Entry,且仅绘制当前高亮的数据集中的Entry。
  4. 确保MarkerView的显示与高亮事件同步,即高亮时显示对应的数据点。

可能还需要修改CursorLineChartRenderer的构造函数,使其能够接收当前高亮的Entry信息,或者在Renderer中直接访问高亮状态。此外,需要确保当没有高亮时,不绘制任何圆圈,或者根据需求处理。

最后,测试修改后的代码,确保只有当MarkerView显示时,对应的数据点圆圈被绘制,其他数据点不绘制。同时,检查触摸事件和高亮事件的同步性,确保用户体验一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值