到目前为止,我可以像这样在图表上获得触摸的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值相对应。
有什么办法吗?
答案 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。