public void onClick(View v) { if (isclick) Log.i(TAG, "onclick"); } }); } float distance = 0; float start, end; boolean isclick = false; boolean isFirst = false; @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); Log.i(TAG, "onTouchEvent: "); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: isclick = false;//點擊狀態清空 start = event.getX(); break; case MotionEvent.ACTION_MOVE: end = event.getX(); distance = end - start; if (isFirst==false&&Math.abs(distance) > 10) {//如果滑動距離大於指定數,並判斷是否第一次(解決滑出指定距離又滑入當作是點擊事件bug) isFirst = true; } if(isFirst){//如果首次確認是滑動狀態責之后滑動都進入此塊代碼 Log.i(TAG, "move"); } break; case MotionEvent.ACTION_UP: if (isFirst) {//是滑動狀態 isclick = false; } else {//點擊狀態 isclick = true; } isFirst = false;//滑動狀態清空 break; } return true; }