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