如何在mpandroidchart中收听滚动完成事件。
我覆盖了 OnChartGestureListener
和 OnChartValueSelectedListener
>,但似乎不起作用。 onChartTranslate()
即使滚动结束后,方法也会得到回调。
onChartGestureStart()
当用户触摸图表时,请调用 onChartGestureEnd()
在用户停止触摸图表后,请调用。
所以,我需要捕获滚动完成后被调用的事件。
所以,您可以在MpandroidChart中听取Linechart的滚动端的介绍。
这对我有用在图表中检查了滚动的开始和结尾
chart.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(!(chart.getLowestVisibleX() == chart.getXAxis().getAxisMinimum() || chart.getHighestVisibleX() == chart.getXAxis().getAxisMaximum())){
// Do your work here
Toast.makeText(getContext(),"Hello Scroll to end check working",Toast.LENGTH_LONG).show();
return false;
}
});
您需要做以下操作:
@Override
public void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture)
{
if(data.getEntryCount() == (int) chart.getHighestVisibleX())
{
// Do your work here
Toast.makeText(getContext(),"Hello Scroll to end check working",Toast.LENGTH_LONG).show();
}
}
这将检查您的滚动是否已达到X轴上的最后值。您可能需要一些自定义,但这是这样做的方法。
更好的方法是使用以下逻辑使用图书馆自己的侦听器:
override fun onChartTranslate(me: MotionEvent?, dX: Float, dY: Float) {
if(dX > 0){
//backward dragging
}
else if(mChart.highestVisibleX == mChart.xAxis.axisMaximum){
//forward dragging reached at max (can not be dragged more)
}
}
我经常在同一问题上挣扎。在找不到解决方案之后,我所做的就是设置
Chart.SetdragDeceLerationEnabled(false);
因此,修饰后没有滚动滚动的延续,我可以与
的最后x坐标 chart.setOnChartGestureListener(new OnChartGestureListener() {
@Override
public void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
}
@Override
public void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
float lastX = holder.chart.getLowestVisibleX();
saved_x.set(position, lowX);
}
});