Tech Racho エンジニアの「?」を「!」に。
  • 開発

Java: GestureDetectorとScaleGestureDetectorを併用する

GestureDetectorScaleGestureDetector
どちらもonTouchEvent(MotionEvent event)内で呼ぶ形で使用しますが、
そのまま以下のように両方呼んでしまうと、ピンチインの時もonScroll()が呼ばれてしまうなどの問題が発生します。

public boolean onTouchEvent(MotionEvent event) {
    boolean a = gestureDetector.onTouchEvent(event) 
    boolean b = scaleGestureDetector.onTouchEvent(event);
    return a || b;
}

そこで、以下のように指の数に応じて分岐することで、問題無く共存できました。
拡大 + スクロールを行うようなビューを作るときに便利です。

public boolean onTouchEvent(MotionEvent event) {
    return event.getPointerCount() == 1 ? gestureDetector.onTouchEvent(event) : scaleGestureDetector.onTouchEvent(event);
}

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。