AndroidにおけるonClickイベントとonTouchEventイベントの競合問題の解決策


カスタムスイッチボタンを作るときに、onTouchEventメソッドを書き換えると、onClickメソッドは実行できなくなります.これはonClickメソッドとonTouchEventメソッドが衝突したためです.私の解決策は、onTouchEventのdownイベントのときに、現在の指のスクリーン上の位置firstXを記録し、upイベントのときに現在の指のスクリーン上の位置lastXを記録することです.2回の位置が変化していない場合は、現在はクリックイベントとみなされます
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		switch (event.getAction()) {

		case MotionEvent.ACTION_DOWN:
			//     
			//            ,     X  
			firstX = lastX = event.getX();//               
			break;

		case MotionEvent.ACTION_MOVE:
			
			break;
		case MotionEvent.ACTION_UP:
			//     
			lastX = event.getX();
			if (lastX - firstX == 0) {
				//       
			} else {
				//     
				}
			}

			break;
		}