GestureDetector 手势的检测

2017-03-29  本文已影响0人  再见亦是泪丶丶

GestureDetector

手势检查,用于辅助检查用户的单击、滑动、长按、双击等行为。
首先,需要创建一个GestureDetector对象并实现OnGestureListener的接口,如下代码块所示:

GestureDetector gestureDetector = new GestureDetector(this,new GestureDetector.OnGestureListener() {
            @Override
            public boolean onDown(MotionEvent e) {
                Log.d(TAG, "onDown: 手指轻轻触摸屏幕的一瞬间");
                return false;
            }

            @Override
            public void onShowPress(MotionEvent e) {
                Log.d(TAG, "onShowPress: 手指轻轻触摸屏幕,尚未松开或拖动");
            }

            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                Log.d(TAG, "onSingleTapUp: 手指松开");
                return false;
            }

            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                Log.d(TAG, "onScroll: 手指按下屏幕并拖动");
                Log.d(TAG, "onScroll: "+distanceX);
                Log.d(TAG, "onScroll: "+distanceX);
                return false;
            }

            @Override
            public void onLongPress(MotionEvent e) {
                Log.d(TAG, "onLongPress: 长按");
            }

            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                Log.d(TAG, "onFling: 按下屏幕,快速滑动后松开");
                return false;
            }
        });
//解决长按屏幕后无法拖动的现象
gestureDetector .setIsLongpressEnabled(false);

手势监听的过程有了,但是我们还需要去接管目标View的onTouchEvent方法,在待监听View的onTouchEvent方法中添加如下代码:

   @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event);

实际开发过程中,可以不适用GestureDetector,完全可以在View 的onTouchEvent方法中实现所需监听,这个根据个人喜好而定。
tips:如果只是监听滑动相关的,建议在onTouchEvent中实现,如果需要监听双击这种行为的话,就适用GestureDetector。

上一篇下一篇

猜你喜欢

热点阅读