在做自定義開關按鈕的時候,出現了這樣一個問題,當重寫onTouchEvent方法的時候,onClick方法就執行不到了,這是由於onClick方法和onTouchEvent方法衝突造成的,我的解決方法是,在onTouchEvent的down事件的時候,記錄下當前手指在屏幕上的位置firstX,up事件的時候記錄下當前手指在屏幕上的位置lastX,如果兩次位置沒有變化,則認爲當前是點擊事件
@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;
}