滚动完成MPANDROIDCHART中的line图表的听众



如何在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);
        }

});

最新更新