1. 程式人生 > >Android-Touch-GestureDetector

Android-Touch-GestureDetector

相關類簡介
GestureDetector
內部監聽
OnGestureListener/OnDoubleTapListener/OnContextClickListener
內部監聽預設實現類
SimpleOnGestureListener implements OnGestureListener, OnDoubleTapListener,
OnContextClickListener

private class gestureListener implements GestureDetector.OnGestureListener{  

        // 使用者輕觸觸控式螢幕,由1個MotionEvent ACTION_DOWN觸發     
public boolean onDown(MotionEvent e) { Log.i("MyGesture", "onDown"); Toast.makeText(MainActivity.this, "onDown", Toast.LENGTH_SHORT).show(); return false; } /* * 使用者輕觸觸控式螢幕,尚未鬆開或拖動,由一個1個MotionEvent ACTION_DOWN觸發 * 注意和onDown()的區別,強調的是沒有鬆開或者拖動的狀態 * * 而onDown也是由一個MotionEventACTION_DOWN觸發的,但是他沒有任何限制, * 也就是說當用戶點選的時候,首先MotionEventACTION_DOWN,onDown就會執行, * 如果在按下的瞬間沒有鬆開或者是拖動的時候onShowPress就會執行,如果是按下的時間超過瞬間 * (這塊我也不太清楚瞬間的時間差是多少,一般情況下都會執行onShowPress),拖動了,就不執行onShowPress。 */
public void onShowPress(MotionEvent e) { Log.i("MyGesture", "onShowPress"); Toast.makeText(MainActivity.this, "onShowPress", Toast.LENGTH_SHORT).show(); } // 使用者(輕觸觸控式螢幕後)鬆開,由一個1個MotionEvent ACTION_UP觸發 ///輕擊一下螢幕,立刻擡起來,才會有這個觸發
//從名子也可以看出,一次單獨的輕擊擡起操作,當然,如果除了Down以外還有其它操作,那就不再算是Single操作了,所以這個事件 就不再響應 public boolean onSingleTapUp(MotionEvent e) { Log.i("MyGesture", "onSingleTapUp"); Toast.makeText(MainActivity.this, "onSingleTapUp", Toast.LENGTH_SHORT).show(); return true; } // 使用者按下觸控式螢幕,並拖動,由1個MotionEvent ACTION_DOWN, 多個ACTION_MOVE觸發 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.i("MyGesture22", "onScroll:"+(e2.getX()-e1.getX()) +" "+distanceX); Toast.makeText(MainActivity.this, "onScroll", Toast.LENGTH_LONG).show(); return true; } // 使用者長按觸控式螢幕,由多個MotionEvent ACTION_DOWN觸發 public void onLongPress(MotionEvent e) { Log.i("MyGesture", "onLongPress"); Toast.makeText(MainActivity.this, "onLongPress", Toast.LENGTH_LONG).show(); } // 使用者按下觸控式螢幕、快速移動後鬆開,由1個MotionEvent ACTION_DOWN, 多個ACTION_MOVE, 1個ACTION_UP觸發 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.i("MyGesture", "onFling"); Toast.makeText(MainActivity.this, "onFling", Toast.LENGTH_LONG).show(); return true; } };