GestureDetector

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; } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章