グラフ領域に触れる位置に垂直カーソルを表示したいと思います。この行に関連付けられたテキストビューは、バーの値にその点のy軸値を表示します。そして、指を左に動かすと(左移動または右移動)、この垂直カーソルはそれに応じて移動し、テキストビューも同様に従いますが、y軸値は新しい場所は移動すると同時に移動します。aChartEngineで線を描く
私はGraphicalViewにコールリストを取得するために登録することができるtouchlistenerがあることを知っていますが、その時点以降の使用方法はわかりません。私はtoucheventをある種のジェスチャーリスナーにも関連付けることができます。しかし、どのように私はオーバーレイが現在のチャートの上に行く垂直カーソルラインを描画するのですか?
私が持っているその他の問題は、真であるときに私は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 私は助けが必要です!
EDIT:これは私がTrueを返すときのonTouchコードです。 onTouchでは、toRealPoint()からの値。とSeriesSelectionが間違っている場合、私は本当の値を得ることができるfalseにtrueを変更します。ヘルプをお願いします
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;"という行の値だけを返すことです。その場合は1回だけ動作します。私が "return true;"という行を変更するとそれは毎回動作するようですが、決して値を返しません。 – SairSalazar
コード例:mChart.setOnTouchListener(新しいビュー。OnTouchListener(){ @Override public boolean onTouch(ビューv、MotionEventイベント){ SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint(); } がtrueを返します。 } }); – SairSalazar
私の更新された答えを見てください。 –