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を示す、という事だ。

コメント

このブログの人気の投稿

nginxでlocalhostとしてアクセスをサーバーに転送する方法

Android・・・テキスト描画あれこれ, ascent(), descent()等

Android:stateに応じて切り替わるdrawable・・・StateListDrawable