指をスライドしたときのMOVEイベントを取る

基本的に画面をタッチしたり指をスライドしたりした時のアクションは

onTouchEventで取る。

@Override
public boolean onTouchEvent(MotionEvent event) {

  touchingX = event.getX();
  touchingY = event.getY();

  switch (event.getAction()) {
  case MotionEvent.ACTION_MOVE:
    touchingAction = "MOVE";
    break;

  case MotionEvent.ACTION_DOWN:
    touchingAction = "DOWN";
    break;

  case MotionEvent.ACTION_UP:
    touchingAction = "UP";
    break;

  case MotionEvent.ACTION_CANCEL:
    touchingAction = "CANCEL";
    break;

  default:
    touchingAction = "";
    break;
  }

  // ここをTrueにしないと、指を放すまでイベントが解放されない
  // 解放されないから、MOVEがとれない
  return true; //super.onTouchEvent(event);
}

最後のreturnは

super.onTouchEvent(event);

のままだと、指を動かしたときの座標とMOVEアクションがとれず、指を離したときにonTouchEventが解放されるようだ。

なので、指のスライドを検知する場合は、return trueとする必要がある。

これはSurfaceViewで画面描画を別スレッドにした場合に、特に影響する。

かも。

Android

Posted by GENDOSU