1

ズーム可能な画像があり、使用してScaleGestureDetector.SimpleOnScaleGestureListenerいます。次の項目を実装する必要があります。

  1. シングル タップで、画像に関する情報を含むトーストが表示されます。
  2. ダブルタップで画像がズームされます。

問題があります。ダブルタップの前は常にシングルタップで、画像はズームしていますが、トーストが表示されます。シングルタップを回避する方法はありますか? この問題を解決するのに十分な知識がありません。

PS使うので使えませんOnDoubleTapListenerScaleGestureDetector.SimpleOnScaleGestureListener

UPD

case MotionEvent.ACTION_UP:
    firstTime = System.currentTimeMillis();
    if (Math.abs(firstTime-secondTime) < 300L) {
    // scale my matrix
    ---//---
    DONE = true; //this flag symbolize, that toast doesn't appear (false - appears)
    }
    else if (!DONE) {
         // making toast
    }
    secondTime = firstTime;
    break;

DoubleTap が有効になっている場合、画像は拡大縮小されますが、トーストに見えます

4

2 に答える 2

2

@ matt5784、ありがとう。問題を解決できました。

case MotionEvent.ACTION_UP:
    float xDiff =  Math.abs(curr.x - start.x);
    float yDiff =  Math.abs(curr.y - start.y);
    firstTime = System.currentTimeMillis();
    if (Math.abs(firstTime-secondTime) > 200L) {
        myHand.postDelayed(mRun, 200);
    }
    else if (!DONE) {
        //scale my matrix
        DONE = true; //this flag symbolize, that toast doesn't appear (false - appears)
    }
    secondTime = firstTime;
    break;

Handler myHand = new Handler();
private Runnable mRun = new Runnable() {
    @Override
    public void run() {
        if (!DONE) {
                     // make toast
        }
    } 
于 2012-05-27T17:24:11.970 に答える
0

1回のタップで情報がすぐにポップアップしない遅延を実装することをお勧めしますが、妥当な時間内に2回目のタップが発生しない場合にのみ表示されます(おそらくダブルタップのしきい値が何であれ) . つまり、.2 秒以内のタップをダブルタップとして登録するように設定されている場合は、.2 秒待ってダブルタップがないことを確認するまで情報を表示しないでください。

別の解決策 (おそらくあまり役​​に立たない) - ダブルタップ/ズーム機能で、情報ボックスを非表示にする機能を呼び出します。ただし、非常に短い時間だけポップアップする可能性があり、ばかげているように見えたり、問題が発生したりする可能性があります。

于 2012-05-24T14:47:40.780 に答える