

誤ってタップしたとき、ドラッグしてから離しキャンセルさせたい場合  
タッチイベントをスルーするにはどのうようにするのでしょうか？  
普通ならClickListenerだけを使えば済むのですが、タッチイベントも実装したいです

下の場合は範囲外で離しても処理123を実行してしまいます  
通常は処理1,2だけ実行、キャンセルの時だけ処理3をしたい  
（本プログラムではACTION_MOVEが入っています）

[code]

    @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
    }
    
[/code]

タッチイベント内のswitch文をif文で大きく括りfalseならswitch処理させない  
では出来そうですが、皆様はどうやってるのでしょうか  
またClickListenerを実装しないやり方はあるのでしょうか

宜しくお願いします


CC BY-SA 3.0
2016-02-05T08:14:07.577
21743
2016-02-05T14:47:09.157
2016-02-05T10:19:37.617
13949
13949
question
android java
ミスTapした時、範囲外にドラッグしてから離すキャンセル（タッチイベント無効にさせたい）


私なら処理をonTouchだけに統一し、処理２の中をifで分岐させます。

処理１、及び処理２で
event.getX()、event.getY()を使用し、タップされた時と離された時の位置を取得します。そして処理２でタップの有効範囲（これは事前に計算しておく）とこれらを比較し、有効なら処理２、範囲外なら処理３を実行するようにします。


CC BY-SA 3.0
2016-02-05T14:47:09.157
21752
2016-02-05T14:47:09.157
8795
21743
answer