GestureDetector
手勢檢查蓝丙,用于輔助檢查用戶的單擊邪铲、滑動(dòng)、長按龙巨、雙擊等行為笼呆。
首先,需要?jiǎng)?chuàng)建一個(gè)GestureDetector對象并實(shí)現(xiàn)OnGestureListener的接口旨别,如下代碼塊所示:
GestureDetector gestureDetector = new GestureDetector(this,new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
Log.d(TAG, "onDown: 手指輕輕觸摸屏幕的一瞬間");
return false;
}
@Override
public void onShowPress(MotionEvent e) {
Log.d(TAG, "onShowPress: 手指輕輕觸摸屏幕诗赌,尚未松開或拖動(dòng)");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.d(TAG, "onSingleTapUp: 手指松開");
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.d(TAG, "onScroll: 手指按下屏幕并拖動(dòng)");
Log.d(TAG, "onScroll: "+distanceX);
Log.d(TAG, "onScroll: "+distanceX);
return false;
}
@Override
public void onLongPress(MotionEvent e) {
Log.d(TAG, "onLongPress: 長按");
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.d(TAG, "onFling: 按下屏幕,快速滑動(dòng)后松開");
return false;
}
});
//解決長按屏幕后無法拖動(dòng)的現(xiàn)象
gestureDetector .setIsLongpressEnabled(false);
手勢監(jiān)聽的過程有了秸弛,但是我們還需要去接管目標(biāo)View的onTouchEvent方法铭若,在待監(jiān)聽View的onTouchEvent方法中添加如下代碼:
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
實(shí)際開發(fā)過程中,可以不適用GestureDetector递览,完全可以在View 的onTouchEvent方法中實(shí)現(xiàn)所需監(jiān)聽叼屠,這個(gè)根據(jù)個(gè)人喜好而定。
tips:如果只是監(jiān)聽滑動(dòng)相關(guān)的绞铃,建議在onTouchEvent中實(shí)現(xiàn)镜雨,如果需要監(jiān)聽雙擊這種行為的話,就適用GestureDetector儿捧。