質問: 誤ってタップしたとき、ドラッグしてから離しキャンセルさせたい場合 タッチイベントをスルーするにはどのうようにするのでしょうか? 普通ならClickListenerだけを使えば済むのですが、タッチイベントも実装したいです 下の場合は範囲外で離しても処理123を実行してしまいます 通常は処理1,2だけ実行、キャンセルの時だけ処理3をしたい (本プログラムではACTION_MOVEが入っています) ``` @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: // 処理.1 break; case MotionEvent.ACTION_UP: // 処理.2 break; } return false; } @Override public void onClick(View view){ // 処理.3 } ``` タッチイベント内のswitch文をif文で大きく括りfalseならswitch処理させない では出来そうですが、皆様はどうやってるのでしょうか またClickListenerを実装しないやり方はあるのでしょうか 宜しくお願いします
回答: 私なら処理をonTouchだけに統一し、処理2の中をifで分岐させます。 処理1、及び処理2で event.getX()、event.getY()を使用し、タップされた時と離された時の位置を取得します。そして処理2でタップの有効範囲(これは事前に計算しておく)とこれらを比較し、有効なら処理2、範囲外なら処理3を実行するようにします。