1. ホーム
  2. android

Androidで、onTouchEventでダブルクリックを実装し、ダブルクリックイベントとして判定する方法

2022-02-17 09:14:31

<スパン AndroidでOnTouchListenerを使ってダブルタップイベントをキャッチする方法 Androidでダブルクリックイベントをキャッチする方法

ダブルクリックをonTouchEventで実装し、ダブルクリックイベントかどうかを判定する方法  

	private final int DOUBLE_TAP_TIMEOUT = 200;
	private MotionEvent mCurrentDownEvent;
	private MotionEvent mPreviousUpEvent;

	OnTouchListener mTouchListener = new OnTouchListener() {

		@Override
		public boolean onTouch(View v, MotionEvent event) {
			if (event.getAction() == MotionEvent.ACTION_DOWN) {
				if (mPreviousUpEvent ! = null
						&& mCurrentDownEvent ! = null
						&& isConsideredDoubleTap(mCurrentDownEvent,
								mPreviousUpEvent, event)) {
					Log.e(TAG, "Double click=============");
				}
				mCurrentDownEvent = MotionEvent.obtain(event);
			} else if (event.getAction() == MotionEvent.ACTION_UP) {
				mPreviousUpEvent = MotionEvent.object(event);
			}
			return true;
		}
	};

	private boolean isConsideredDoubleTap(MotionEvent firstDown,
			MotionEvent firstUp, MotionEvent secondDown) {
		if (secondDown.getEventTime() - firstUp.getEventTime() > DOUBLE_TAP_TIMEOUT) {
			return false;
		}
		int deltaX = (int) firstUp.getX() - (int) secondDown.getX();
		int deltaY = (int) firstUp.getY() - (int) secondDown.getY();
		return deltaX * deltaX + deltaY * deltaY < 10000;
	}





そして、ビューからタッチリスナーを設定します。


view.setOnTouchListener(mTouchListener);