我想在我触摸图表区域的位置显示一个垂直光标。与此行关联的文本视图将显示条形的值以及其中点的 y 轴值。当我将手指移到右边的同时保持手指向下[左移或右移]时,这个垂直光标会相应地移动,文本视图也会随之移动,但会显示 y 轴值移动时的新位置。
我看到 GraphicalView 有一个触摸监听器,我可以注册它以获取回调 - 但从那时起我不知道如何使用它。我也可以设法将 touchevent 与某种手势监听器相关联。但是我如何绘制覆盖在当前图表顶部的垂直光标线?
我遇到的其他问题是,在 onTuuch 中,当返回 true 时,我无法获取 mChart.getCurrentSeriesAndPoint(); 的值。,总是返回 Null,但如果我将返回值更改为 False,我可以获得这些值,但我无法再次访问 ontuch。
这是我的代码
mChart.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_CANCEL) {
dataset.removeSeries(dataset.getSeriesCount()-1);
multiRenderer.removeSeriesRenderer(GraficaCuatro);
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
multiRenderer.setPanEnabled(false);
multiRenderer.setZoomEnabled(false);
SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint();
if(seriesSelection != null)
{
Toast.makeText(
getActivity().getBaseContext(),"Hola",
Toast.LENGTH_SHORT).show();
}
XYSeries Line = new XYSeries("");
Line.add(event.getX()/1.5,minValue);
Line.add(event.getX()/1.5,maxValue);
dataset.addSeries(Line);
multiRenderer.addSeriesRenderer(GraficaCuatro);
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
dataset.removeSeries(dataset.getSeriesCount()-1);
multiRenderer.removeSeriesRenderer(GraficaCuatro);
XYSeries Line = new XYSeries("");
Line.add(event.getX()/1.5,minValue);
Line.add(event.getX()/1.5,maxValue);
dataset.addSeries(Line);
multiRenderer.addSeriesRenderer(GraficaCuatro);
}
if (event.getAction() == MotionEvent.ACTION_UP) {
dataset.removeSeries(dataset.getSeriesCount()-1);
multiRenderer.removeSeriesRenderer(GraficaCuatro);
}
mChart.repaint();
return true;
}
});
我很想要这个。
(来源:subirimagenes.com)
请我需要帮助!
编辑:这是我的 onTouch 代码,当我返回 True 时;在 onTouch 中,来自 toRealPoint() 的值;和 SeriesSelection 不正确,如果我将 true 更改为 false,我可以获得真实值。请帮忙
mChart.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint();
double[]values = mChart.toRealPoint(0);
if(seriesSelection != null)
{
if (event.getAction() == MotionEvent.ACTION_CANCEL) {
dataset.removeSeries(dataset.getSeriesCount()-1);
multiRenderer.removeSeriesRenderer(GraficaCuatro);
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
XYSeries Line = new XYSeries("");
Line.add(seriesSelection.getXValue(),minValue);
Line.add(seriesSelection.getXValue(),maxValue);
dataset.addSeries(Line);
multiRenderer.addSeriesRenderer(GraficaCuatro);
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
dataset.removeSeries(dataset.getSeriesCount()-1);
multiRenderer.removeSeriesRenderer(GraficaCuatro);
XYSeries Line = new XYSeries("");
Line.add(seriesSelection.getXValue(),minValue);
Line.add(seriesSelection.getXValue(),maxValue);
dataset.addSeries(Line);
multiRenderer.addSeriesRenderer(GraficaCuatro);
}
if (event.getAction() == MotionEvent.ACTION_UP) {
dataset.removeSeries(dataset.getSeriesCount()-1);
multiRenderer.removeSeriesRenderer(GraficaCuatro);
}
}
mChart.repaint();
return true;
}
});