Прокрутка финиша слушателя линейной диаграммы в mpandroidchart

Как слушать событие завершения прокрутки в mpandroidchart.

Я переопределил OnChartGestureListener и OnChartValueSelectedListener, но, похоже, это не работает. Метод onChartTranslate() получает обратный вызов даже после завершения прокрутки.

onChartGestureStart() вызывается, когда пользователь касается диаграммы, а onChartGestureEnd() вызывается, когда пользователь перестает касаться диаграммы.

Итак, мне нужно поймать событие, которое вызывается, когда прокрутка заканчивается.

Итак, не могли бы вы рассказать, как прослушивать конец прокрутки линейной диаграммы в mpandroidchart.

Можете сослаться по этой ссылке github.com/PhilJay/MPAndroidChart/wiki/The-Axis

Stuti Kasliwal 18.12.2018 10:33
11
1
1 941
3

Ответы 3

Вам нужно сделать следующее:

@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. Вам может потребоваться небольшая настройка, но это способ сделать это.

Спасибо за Ваш ответ. OnChartGestureEnd вызывается, когда пользователь снимает палец с диаграммы. Но он не может послушать, прокручивается диаграмма или нет. Я хочу послушать, закончилась ли прокрутка графика. Не могли бы вы помочь мне в этом

Kanagalingam 02.01.2019 08:22

Проверка внутри проверяет, закончили ли вы прокрутку. Я знаю, что это сработает, когда пользователь уберет палец с экрана, но внутренняя проверка проверяет, прокручена ли диаграмма до конца по оси x или нет. Внедрите это и проверьте, работает он или нет, тогда вы поймете, о чем я говорю!

Muhammad Saad Rafique 02.01.2019 09:11

Спасибо за ответ. Я пробовал твой код. Я не хочу проверять, дошла ли прокрутка до конца диаграммы (последнее значение на оси x). Мое требование - получить центральное значение диаграммы после завершения события прокрутки. Например, в диаграмме может быть 1000 записей. Когда пользователь прокручивает и событие прокрутки заканчивается около 500-й записи в диаграмме, мне нужно, чтобы этот конкретный порт просмотра был видим для пользователя, чтобы получить центральное значение. Я понимаю, могу ли я прикрепить изображение, касающееся моих требований, братан? Спасибо

Kanagalingam 02.01.2019 09:41

это сработало для меня проверил начало и конец прокрутки на графике

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 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)
                }
            }

Другие вопросы по теме