在android中處理各種觸摸事件

Android裏有兩個類
android.view.GestureDetector
android.view.GestureDetector.SimpleOnGestureListener

(另外 android.widget.Gallery好像是更牛x的OnGestureListener )

1)
新建一個類繼承 SimpleOnGestureListener,HahaGestureDetectorListener
可以實現以下event事件。

boolean  onDoubleTap(MotionEvent e)
解釋:雙擊的第二下Touch down時觸發

boolean  onDoubleTapEvent(MotionEvent e)
解釋:雙擊的第二下Touch down和up都會觸發,可用e.getAction()區分。

boolean  onDown(MotionEvent e)
解 釋:Touch down時觸發

boolean  onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
解釋:Touch了滑動一點距離後,up時觸發。

void  onLongPress(MotionEvent e)
解釋:Touch了不移動一直Touch down時觸發

boolean  onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
解釋:Touch了滑動時觸發。

void  onShowPress(MotionEvent e)
解 釋:Touch了還沒有滑動時觸發
(與onDown,onLongPress比較
onDown只要Touch down一定立刻觸發。

而Touchdown後過一會沒有滑動先觸發onShowPress再是onLongPress。

所 以Touchdown後一直不滑動,onDown->onShowPress->onLongPress這個順序觸發。


boolean  onSingleTapConfirmed(MotionEvent e)
boolean  onSingleTapUp(MotionEvent e)
解釋:上面這兩個函數都是在touch down後又沒有滑動(onScroll),又沒有長按(onLongPress),然後Touchup時觸發。

點擊一下非常快的(不 滑動)Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed

點 擊一下稍微慢點的(不滑動)Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed


2)在view的新建一個GestureDetector的對象。
構造函數裏
gestureDetector = new GestureDetector(new HahaGestureDetectorListener());

然後在 View的onTouchEvent裏以下這樣用,就可以在剛纔1)弄的事件裏寫自己的代碼了。
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
}

 

但是,鬱悶的是SimpleOnGestureListener沒有提供on

Up(), 還得在View的
onTouchEvent的
case MotionEvent.ACTION_UP:
裏來寫對應的代 碼。。。


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