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