私は achartengine を使用しており、チャートを長押ししたときにアクション バーでアクション モードを有効にしたいと考えています。しかし、OnLongClickListener が機能していません。ほぼすべてを試しましたが、機能させることができず、その理由もわかりません。これが私のコードです:
mChartView.setLongClickable(true);
mChartView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Log.i("ClickListener", "CLICK");
return false;
}
});
しかし、イベントが呼び出されることはありません。チャートはスクロール可能ですが、意味がないためだと思います。OnClick を試してみましたが、うまくいきません。動作しているのは OnTouch だけですが、長押しの動作が得られません。
編集:
または、タッチスクリーンの状態の実際の状態を取得する方法があるかもしれません。この方法では、たとえば 1000mS に達するまで「タイマー」を置くことができますが、タッチスクリーンがタッチされている間だけです。現在の状態に関係なく、イベントが発生したときのタッチスクリーンの状態。
わかりました、ここに折れ線グラフのコードがあります:
private static XYSeries input1;
private static XYMultipleSeriesDataset mDataset;
private static XYSeriesRenderer renderer1;
private static XYMultipleSeriesRenderer mRenderer;
private static GraphicalView mChartView;
mRenderer = new XYMultipleSeriesRenderer();
renderer1 = new XYSeriesRenderer();
mRenderer.setOrientation(Orientation.HORIZONTAL);
mRenderer.addSeriesRenderer(renderer1);
mRenderer.setXAxisMax(10);
mRenderer.setYAxisMax(10);
mRenderer.setAxesColor(Color.WHITE);
mRenderer.setLabelsColor(Color.WHITE);
mRenderer.setShowGrid(true);
input1 = new XYSeries("Linea");
mDataset = new XYMultipleSeriesDataset();
mDataset.addSeries(input1);
renderer1.setColor(Color.WHITE);
input1.add(4, 7);
input1.add(7, 3);
input1.add(8, 6);
input1.add(9, 2);
mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);
setContentView(mChartView);
mChartView.setLongClickable(true);
mChartView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Log.i("Click", "LONG CLICKED CHART");
return false;
}
});
グラフをスライドするとロングクリックとしても取得されることに気付いたので、onTouch でロングクリックを実行しようとしています。