,那么,這個(gè)類如何使用呢?以下是使用該類的一個(gè)范例:
private GestureDetector mGestureDetector;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGestureDetector = new GestureDetector(this, new MyGestureListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
/* 有關(guān)上面的 onTouchEvent方法,我們可以直接判斷MotionEvent的類型,
對(duì)于手勢(shì)移動(dòng)僅僅捕獲ACTION_MOVE即可,
我們通過(guò)參數(shù)MotionEvent e1, MotionEvent e2,float distanceX, float distanceY可以獲取操作變化。
比如 distanceX > 0 向右邊移動(dòng),distanceX < 0 則向左邊,distanceY > 0 向上滾動(dòng), distanceY < 0 向下滾動(dòng)。
*/
}
class MyGestureListener extends GestureDetector.SimpleOnGestureListener{
@Override
public boolean onSingleTapUp(MotionEvent ev) {
Log.d("onSingleTapUp",ev.toString());
return true;
}
@Override
public void onShowPress(MotionEvent ev) {
Log.d("onShowPress",ev.toString());
}
@Override
public void onLongPress(MotionEvent ev) {
Log.d("onLongPress",ev.toString());
}
}
更多的回調(diào)消息,方便的對(duì)用戶的動(dòng)作進(jìn)行響應(yīng)
public interface OnGestureListener {
// Touch down時(shí)觸發(fā), e為down時(shí)的MotionEvent
boolean onDown(MotionEvent e);
// 在Touch down之后一定時(shí)間(115ms)觸發(fā),e為down時(shí)的MotionEvent
void onShowPress(MotionEvent e);
// Touch up時(shí)觸發(fā),e為up時(shí)的MotionEvent
boolean onSingleTapUp(MotionEvent e);
// 滑動(dòng)時(shí)觸發(fā),e1為down時(shí)的MotionEvent,e2為move時(shí)的MotionEvent
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY);
// 在Touch down之后一定時(shí)間(500ms)觸發(fā),e為down時(shí)的MotionEvent
void onLongPress(MotionEvent e);
// 滑動(dòng)一段距離,up時(shí)觸發(fā),e1為down時(shí)的MotionEvent,e2為up時(shí)的MotionEvent
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY);
}
public interface OnDoubleTapListener {
// 完成一次單擊,并確定沒(méi)有二擊事件后觸發(fā)(300ms),e為down時(shí)的MotionEvent
boolean onSingleTapConfirmed(MotionEvent e);
// 第二次單擊down時(shí)觸發(fā),e為第一次down時(shí)的MotionEvent
boolean onDoubleTap(MotionEvent e);
// 第二次單擊down,move和up時(shí)都觸發(fā),e為不同時(shí)機(jī)下的MotionEvent
boolean onDoubleTapEvent(MotionEvent e);
}