Android中onClick事件和onTouchEvent事件衝突問題的解決方案

在做自定義開關按鈕的時候,出現了這樣一個問題,當重寫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;
		}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章