ダブルタップではない私のアプリのサポートピンチズームを作成する必要がありますが、:私はこれは私が私のonTouchListenerのために作られたコードである
if(event.getAction() == MotionEvent.ACTION_UP) {
Log.i("", "double touch : " + timeLastTouch + "... time passed: " + (System.currentTimeMillis() - timeLastTouch));
if (System.currentTimeMillis() - timeLastTouch < 500) {
Log.i("", "double touch TRUE");
timeLastTouch = System.currentTimeMillis();
return true;
} else {
Log.i("", "double touch FALSE");
timeLastTouch = System.currentTimeMillis();
return false;
}
}else if(event.getAction() == MotionEvent.ACTION_DOWN) {
Log.i("", "double touch DOWN : " + timeLastTouch + "... time passed: " + (System.currentTimeMillis() - timeLastTouch));
if (System.currentTimeMillis() - timeLastTouch < 500) {
Log.i("", "double touch TRUE DOWN");
timeLastTouch = System.currentTimeMillis();
return true;
}else {
Log.i("", "double touch FALSE DOWN");
return false;
}
}else {
timeLastTouch = System.currentTimeMillis();
Log.i("","double touch ELSE FALSE");
return false;
}
しかし、それは動作しません。 このビューはサーフェスビュー上にあります。今度はイベントをSurfaceViewに送ってピンチ(ピンチでズーム)する必要があります これでロジックを作成しようとしましたので、ダブルタッチの場合はtrueを返します(タッチを消費しています。表示、タッチを取得しません)。 しかし、これを行うと、ズームのピンチがうまくいきません。 このロジックを削除してピンチズームが機能するので、いくつかのログを追加して、それに従ってください。ピンチズームの場合、ACTION_MOVEが呼び出された後で2つのダウンイベントが発生することに気付きました。恐らく、ピンチでズームすると、2本の指を置いてからズームします。私の問題は、2番目のAction_downがタッチを消費するために、私のコードがそれを設定していたことです。つまり、ズームのピンチが開始しないことを意味します。どのようにこれを修正するためのideeas?
[既存のピンチインプリメンテーション](https://android-arsenal.com/search?q=pinch)を見て、それらがどのように機能しているかを確認することができます。 – CommonsWare
さて、私はピンチロジックを実装する必要はありません。それはすでに存在します。私の見解の下にあるビューに。私が望むのは、ダブルタップのために私の視点が消費されますが、ピンチのためではありません。 (event.actionのログ記録)は、ダブルタップの場合0 0 1(action_down、action_down、action_up)を返し、0 0 2/1(action_down、action_down、moveまたはup)を返します。それで私の問題。原因2番目のAction_downイベントをブロックしても、ピンチズームは得られません。私がそれをブロックしなければ、それは次のビューに送られているので、それは起きてはいけません。 –
したがって、「移動」のMotionEventが呼び出される前にピンチズームが発生したときを知るロジックが必要です。私はevent.getIndexCounter()を使用して試してみましたか、マルチタッチであるかどうかを確認しましたが、 –