onTouchEventでACTION_MOVEが取得できないバグ

まぁ、バグじゃなくて仕様だけどな。

onTouchEventを行う時にeclipseの補完で

@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    return super.onTouchEvent(event);
}

となるのでタッチイベントを取得しようとした時に

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        _x = (int) event.getX();
        _y = (int) event.getY();
        break;
    case MotionEvent.ACTION_MOVE:
        _x = (int) event.getX();
        _y = (int) event.getY();
        break;
    case MotionEvent.ACTION_UP:
        break;
    default:
        break;
    }
    return super.onTouchEvent(event);
}

としてしまうとなぜか、ACTION_MOVEで値が取得できません。

実際にはACTION_MOVEが動いていないのです。

ACTION_DOWNの際にsuper.onTouchEventがfalseである事を要因として、タッチのイベントが取れないようです。

タッチを利用する際には、return trueを全体に追加すればよいので、

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        _x = (int) event.getX();
        _y = (int) event.getY();
        break;
    case MotionEvent.ACTION_MOVE:
        _x = (int) event.getX();
        _y = (int) event.getY();
        break;
    case MotionEvent.ACTION_UP:
        break;
    default:
        break;
    }
    return true;
}

でACTION_MOVEの取得も実装ができました。

 

前後の記事

前の記事:

次の記事:

関連の記事

コメント

:D よねぴ

動作不良で悩んでいたところ、こちらのお陰で
修正できました。ありがとうございます。

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑