2010/11/27
onDoubleTap と onDoubleTapEvent の違い
そういった複雑な動作を捕まえるためには、Activity に OnGestureListener, OnDoubleTapListener というインターフェースを実装してやります。
(具体的な使い方は Google Map でダブルタップズーム for Android を参考にしてください)
ところで、 OnDoubleTapListener には OnDoubleTap と OnDoubleTapEvent という2つのメソッドが存在しますが、最初どういう違いがあるのか良くわからなかったので、ちょっと調べてみました。
って言っても、コメント読んだだけですが :-)
OnDoubleTap の ToolTip には、
Notified when a double-tap occurs.と書いてあります。直訳すると、
ダブルタップされた時に通知されますって感じでしょうか。そのままですね。
OnDbouleTapEvent の ToolTip には、
Notified when an event within a double-tap gesture occurs, including the down, move, and up events.と書いてあります。
ダブルタップ中にイベントがおこると通知されます。ダウン、移動、アップを含みますという感じでしょうか。
実際、OnDbouleTapEvent をログで捕まえると、一回のダブルタップで4,5回のイベントを捕まえる事ができます。
OnDbouleTapEvent が呼ばれた起因を調べるには、以下のように MotionEvent の getAction メソッドを使えば可能です。
public boolean onDoubleTapEvent(MotionEvent e) { switch (e.getAction()) { case MotionEvent.ACTION_DOWN: Log.i("Test", "Action Down."); return true; case MotionEvent.ACTION_UP: Log.i("Test", "Action Up."); return true; case MotionEvent.ACTION_MOVE: Log.i("Test", "Action Move."); return true; default: Log.i("Test", "Action Other."); return true; } }2回タップした後に、指を離さず、ちょっと動かしてみたときのログは以下のようになりました。
11-26 23:43:57.286: INFO/Test(326): Action Down. 11-26 23:43:57.406: INFO/Test(326): Action Move. 11-26 23:43:57.447: INFO/Test(326): Action Move. 11-26 23:43:57.476: INFO/Test(326): Action Move. 11-26 23:43:57.536: INFO/Test(326): Action Move. 11-26 23:43:57.576: INFO/Test(326): Action Move. 11-26 23:43:57.607: INFO/Test(326): Action Move. 11-26 23:43:57.827: INFO/Test(326): Action Up.
2010/11/28 追記
その他のイベントも、どのような順番で処理されるのか調べてみました。
OnGestureListener の処理順
0 件のコメント:
コメントを投稿