차트 영역을 터치하는 위치에 세로 커서가 나타나게하고 싶습니다. 이 선과 연관된 텍스트 뷰는 막대의 값을 그 점의 y 축 값으로 표시합니다. 그리고 손가락을 왼쪽으로 움직이면서 (왼쪽 이동 또는 오른쪽 이동),이 수직 커서는 그에 따라 움직일 것이고 텍스트 뷰는 마찬가지로 따라 가면서 y 축 값을 새 위치가 움직일 때.aChartEngine에서 선 그리기
GraphicalView에 콜백을 받기 위해 등록 할 수있는 touchlistener가 있음을 알았지 만, 그 시점부터 그 사용법을 알지 못합니다. 나는 touchevent를 일종의 gesturelistener와 연관시킬 수있다. 하지만 오버레이가 현재 차트 위에 올라가는 수직 커서 선을 그리려면 어떻게해야합니까?
다른 문제는 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;
}
});
입니다.
dwef http://s2.subirimagenes.com/imagen/previo/thump_82994131.png 제발 도와주세요!
편집 : 이것은 True를 반환 할 때 내 onTouch 코드입니다. onTouch에서 toRealPoint()의 값; 및 SeriesSelection 잘못된 경우, 내가 사실 값을 얻을 수 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;
}
});
감사 단을 사용합니다. onClick 이벤트는 나를 위해 작동하지 않습니다. 왜냐하면 화면을 터치하고 손가락을 움직이는 동안 값을 가져와야하기 때문입니다. 그게 내가 onTouchListener를 사용하는 이유입니다. 문제는 "getCurrentSeriesAndPoint()"이벤트가 "return false;"라는 값만 반환한다는 것입니다. 하지만이 경우에는 한 번만 작동합니다. "return true;"에 대한 라인을 변경하면 매번 작동하는 것처럼 보이지만 절대 값을 반환하지 않습니다. – SairSalazar
코드 예 : mChart.setOnTouchListener (새보기.OnTouchListener() { @Override public boolean onTouch (뷰 v, MotionEvent 이벤트) { SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint(); } return true; } }); – SairSalazar
업데이트 된 답변보기 –