AndroidにおけるonClickイベントとonTouchEventイベントの競合問題の解決策
704 ワード
カスタムスイッチボタンを作るときに、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;
}