androidplot从触摸中获取系列中的Y值

时间:2015-06-25 07:41:30

标签: androidplot

到目前为止,我可以像这样在图表上获得触摸的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值相对应。

有什么办法吗?

1 个答案:

答案 0 :(得分:0)

好的解决了。

我使用我用来填充Number[]的原始SimpleXySeries。这有X和Y值交错,所以我需要在我使用我的问题中的代码检索到的Number[]中找到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值的索引我可以通过在索引中加1来轻松找到y值,因为值是交错的,所以我知道x之后的值是相应的y。