androidplot Получить значение Y в серии от касания

Пока я могу получить значение Y прикосновения к графику вот так.

mSpeedPlot.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                PointF click = new PointF(event.getX(),event.getY());
                if ( mSpeedPlot.getGraphWidget().containsPoint( click )) {
                    Log.d("HOF","Plot X: "+DistanceValue.fromMetres(mSpeedPlot.getXVal(click).doubleValue()).km()+"km "+" Y: "+mSpeedPlot.getYVal(click)+"km/h");
                }
                return false;
            }
        });

Что я хочу сделать, так это вместо того, чтобы просто вернуть значение y того места, где было прикосновение, мне нужно значение Y ряда, нанесенного на график, который соответствует значению x.

Любой способ сделать это?


person StuStirling    schedule 25.06.2015    source источник


Ответы (1)


Ок решил.

Я использую исходный Number[], который я использовал для заполнения моего SimpleXySeries. Здесь значения X и Y чередуются, поэтому мне нужно каким-то образом найти индекс значения X в этом Number[], которое я получил, используя код в моем вопросе.

Поэтому я обрабатываю свои данные, прежде чем добавлять их в этот номер [], разбивая данные на сегменты расстояния, в основном из-за сглаживания и эстетических соображений. Итак, чтобы найти индекс значения, возвращаемого касанием, я делаю следующее.

double xValue = mSpeedPlot.getXVal(click).doubleValue(); // gives me the value of x
int index = Double.valueOf(Math.floor(xValue / distanceSegments)).intValue()*2;
Log.d("HOF","Speed Index: "+index+" Y Value: "+speedValues[index+1]);

Я делю xValue на DistanceSegments, потому что это, по сути, дает, сколько сегментов расстояния было использовано для получения этого значения x. Затем я умножаю это на 2, потому что в моем Number[] значения x y чередуются, поэтому умножение на 2 позволяет избежать значений y.

Теперь у меня есть индекс значения x. Я могу легко найти значение y, добавив 1 к индексу, потому что значения чередуются, поэтому я знаю, что значение после x соответствует y.

person StuStirling    schedule 25.06.2015