MotionEvent 为我们提供了一系列 ACTION 事件来响应我们的按下、抬起、移动操作,这样我们就可以判断一些动作是否出现,例如是否滑动,是否双击等等。
Android 还为我们提供了一个 GestureDetector 类来帮助我们检测一些常用手势,例如单击、双击、滑动、长按等等。
GestureDetector 可以让我们简单的检测一些常见手势,而不用对单个 ACTION 进行处理。
Android 提供了两个接口:
GestureDetector.OnGestureListener
GestureDetector.OnDoubleTapListener
这两个接口分别定义了一些常用手势方法:
GestureDetector.OnGestureListener
GestureDetector.OnDoubleTapListener
如果你嫌实现那么多方法麻烦,Android 还提供了一个 GestureDetector.SimpleOnGestureListener,我们可以继承该类,然后仅仅实现我们需要的方法即可。
使用 GestureDetector 有三步:
创建 GestureDetector 监听器,方法有两种
创建 GestureDetector 对象
示例:
public class MainActivity extends Activity {
GestureDetector detector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
detector = new GestureDetector(this, new MyGestureDetectorListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
this.detector.onTouchEvent(event);
return super.onTouchEvent(event);
}
}
class MyGestureDetectorListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.d("TTT", "~~~~~~~~~~~~~onFling~~~~~~~~~~~~~~~~");
return super.onFling(e1, e2, velocityX, velocityY);
}
@Override
public void onShowPress(MotionEvent e) {
Log.d("TTT", "~~~~~~~~~~~~~onShowPress~~~~~~~~~~~~~~~~");
super.onShowPress(e);
}
}