public class MainActivity extends AppCompatActivity implements View.OnTouchListener, GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener {
public static final String TAG = "wangdamo";
private GestureDetector gestureDetector;
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final RelativeLayout rl = findViewById(R.id.rl);
rl.setOnTouchListener(this);
//手勢檢測,用於輔助檢測用戶的單擊的、滑動、長按、雙擊等行爲
gestureDetector = new GestureDetector(this);
//true:長按屏幕後無法拖動 可觸發長按事件
//false:可拖動,不可長按
gestureDetector.setIsLongpressEnabled(true);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return gestureDetector.onTouchEvent(motionEvent);//接管touch監聽事件;
}
/**
* 手指輕碰屏幕的一瞬間 由1個ACTION_DOWN觸發
*
* @param motionEvent
* @return
*/
@Override
public boolean onDown(MotionEvent motionEvent) {
Log.i(TAG, "onDown: ");
return true;
}
/**
* 手指輕碰屏幕的一瞬間,尚未鬆開或拖動 由1個ACTION_DOWN觸發
* 與onDown區別:強調沒有鬆開或者拖動的狀態
*
* @param motionEvent
*/
@Override
public void onShowPress(MotionEvent motionEvent) {
Log.i(TAG, "onShowPress: ");
}
/**
* 手指輕碰屏幕後鬆開,伴隨ACTION_UP而觸發
* 單擊行爲
*
* @param motionEvent
* @return
*/
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
Log.i(TAG, "onSingleTapUp: ");
return false;
}
/**
* 手指按下屏幕並拖動,由1個ACTION_DOWN,多個ACTION_MOVE觸發
* 拖動行爲
*
* @param motionEvent
* @param motionEvent1
* @param v
* @param v1
* @return
*/
@Override
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
Log.i(TAG, "onScroll: ");
return false;
}
/**
* 長按事件
*
* @param motionEvent
*/
@Override
public void onLongPress(MotionEvent motionEvent) {
Log.i(TAG, "onLongPress: ");
}
/**
* 快速滑動行爲
*
* @param motionEvent
* @param motionEvent1
* @param v
* @param v1
* @return
*/
@Override
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
Log.i(TAG, "onFling: ");
return false;
}
/**
* 嚴格的單擊行爲
* 與onSingleTapUp區別:如果觸發了onSingleTapConfirmed,則後面不可能再緊跟着另一個單擊行爲,這隻可能是單擊,不可能是雙擊中的一次單擊
*
* @param motionEvent
* @return
*/
@Override
public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
Log.i(TAG, "onSingleTapConfirmed: ");
return false;
}
/**
* 雙擊,有兩次單擊組成
* 不可能與onSingleTapConfirmed共拍存
*
* @param motionEvent
* @return
*/
@Override
public boolean onDoubleTap(MotionEvent motionEvent) {
Log.i(TAG, "onDoubleTap: ");
return false;
}
/**
* 雙擊
*
* @param motionEvent
* @return
*/
@Override
public boolean onDoubleTapEvent(MotionEvent motionEvent) {
Log.i(TAG, "onDoubleTapEvent: ");
return false;
}
}
GestureDetector
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.