上一篇文章基于MPAndroidChart的自定义LineChart(一)—-节点绘制叉号+分段绘制背景中添加了节点绘制叉号+分段绘制背景的功能,这篇文章继续改造,给MPAndroidChart的LineChart单击事件做一些处理,让图表能跟响应单击操作,改变数据重绘图表。
效果如下:
功能实现
由于MPAndroiChart只支持缩放、拖动(平移)、选择等手势,但这些手图表的数据没有什么改变,如果我们需要在图标上根据手势修改数据,继而重绘图表,就需要自己处理了。好在MPAndroiChart为我们提供了OnChartGestureListener和OnChartValueSelectedListener两个接口供我们处理手势。
OnChartGestureListener
public interface OnChartGestureListener {
void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture);
void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture);
void onChartLongPressed(MotionEvent me);
void onChartDoubleTapped(MotionEvent me);
void onChartSingleTapped(MotionEvent me);
void onChartFling(MotionEvent me1, MotionEvent me2, float velocityX, float velocityY);
void onChartScale(MotionEvent me, float scaleX, float scaleY);
void onChartTranslate(MotionEvent me, float dX, float dY);
}
从方法名就能看出在什么时候背调用了
OnChartValueSelectedListener
public interface OnChartValueSelectedListener {
void onValueSelected(Entry e, Highlight h);
void onNothingSelected();
}
onValueSelected是图表中的某一个值被选择后被调用,但是并不是说一定要点在节点的圆环那里才会被选中,而是把图表分为一段一段,如下图所示:
点击整列的任何位置都会调用onValueSelected方法。