タッチイベントの実装方法|Android開発

      2016/11/08

Androidでのタッチイベントを認識させる方法です。下記のサンプルではImageViewで発生したイベントを受信しています。

サンプル

準備

ピンチイベントリスナを使用しない場合は17行目をコメントアウト

ダブルタップリスナ

タッチイベントリスナ

MotionEvent.ACTION_MOVEでスワイプ動作を判定します。下記サンプルではdiffXdiffYが移動量になります。

自前でピンチイベントを処理する場合

factorは前回イベント発生時の2点間の距離と今回の2点間の距離の比率です。
1.0なら移動無し、1.0を超えた場合はピンチアウトになります。

ピンチイベントを処理しない場合

ピンチイベントは後述のmScaleGestureListenerに任せます。こちらの方がシンプルです。

ピンチイベントリスナ

getScaleFactor()で得られる値は前回イベント発生時の2点間の距離と今回の2点間の距離の比率です。
1.0なら移動無し、1.0を超えた場合はピンチアウトになります。

イベントの通知順序

以下の様な順番でイベントが通知されますが、上記サンプルの各リスナのように戻り値でtrueを返すと、イベント消費となり以降に通知されなくなります。

  • onTouch (View)
  • onTouchEvent (Activity)
  • onDoubleTap
  • onScale

onDoubleTaponScaleGestureDetector.onTouchEvent()ScaleGestureDetector.onTouchEvent()呼び出し箇所により変わります

View.onTouch でなく Activity.onTouchEvent を使用する場合

 - Android