Есть ли способ перетащить точки данных на MPAndroidChart? - PullRequest
0 голосов
/ 06 апреля 2019

Я использую MPAndroidChart. Я хочу, чтобы можно было щелкнуть точку данных и перетащить ее, а когда я подниму палец, я хочу иметь возможность указать значение Y графика, на котором я поднял палец. В этом случае значение X неважно.

У меня нет проблем с определением координат существующей точки. Я пытался использовать onChartGestureStart и onChartGestureEnd, чтобы определить новые координаты, но пока все, что он говорит мне, это координаты экрана, которые я не совсем уверен, как преобразовать в значения Y на диаграмме.

Вот мой слушатель, который используется для определения координаты нажатого круга данных

 chart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
            @Override
            public void onValueSelected(Entry e, Highlight h) {

               if(e.getY() == (float)Min) {
                   //Min value clicked on , do something
                   Toast.makeText(getApplicationContext(),"Min Value Clicked:" + Float.toString(e.getY()),Toast.LENGTH_LONG).show();
               } else if  (e.getY() == (float)Max) {
                   //Max Value clicked on , do something
                   Toast.makeText(getApplicationContext(),"Max Value Clicked:" + Float.toString(e.getY()),Toast.LENGTH_LONG).show();
               }

            }
chart.setOnChartGestureListener(new OnChartGestureListener() {
            @Override
            public void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
                startX = me.getRawX();
                startY =me.getRawY();

               int test = me.getPointerCount();
                MotionEvent.PointerCoords pc = new MotionEvent.PointerCoords();
               me.getPointerCoords(0,pc);
            }

            @Override
            public void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
                endX = me.getRawX();
                endY =me.getRawY();
            }
...