Android: Touch Eventを簡単に処理する
AndroidのTouch Eventを真面目にやるのはシンドイ。
と思っていたら便利クラスを発見
と思っていたら便利クラスを発見
- GestureDetector
- LongTapやFlicなどを簡単に検出できる
- ScaleGestureDetector(API Level:8)
- ピンチイン、ピンチアウトを簡単に検出できる
GestureDetectorのイベントを調べてみた
- public boolean onDown(MotionEvent e)
- 触れた瞬間発動
しかし、SingleTapなのかMultiTapなのか、動くのか動かないのか、すぐ離すのか長く押されるのか、この時点では確定しない - public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
- フリック動作をしたときのイベント
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
- スクロール動作
どうやったら発動するのか不明。マウスのホイールか? - public void onShowPress(MotionEvent e)
- Single TapのままDownが少し継続すると発動。
- public boolean onSingleTapConfirmed(MotionEvent e)
- Down後、最後までSingleTapかつ移動しなかった場合発動。
- public boolean onSingleTapUp(MotionEvent e)
- Down後、途中、MultiTapになっても移動しなかった場合発動。
ScaleGestureDetectorのイベントを調べてみた
- public boolean onScale(ScaleGestureDetector detector)
- スケールが変わっても変わってなくても呼ばれるっぽい
スケール自体は、detector.getScaleFactor()で取得できるが、この値は、前回のイベントからの相対値であることに注意。 ピンチインを開始してからの倍率ではない。つまり、指が動いてないなら1.0を示す、という事だ。
コメント
コメントを投稿