欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

GestureDetector使用

程序员文章站 2024-03-24 15:30:40
...

GestureDetector是view包下的一个子类,用于来监听手指在VIEW上得各种动作。当我们需要监听手指在屏幕上得按下、按压、A点到B点、滑动等各种手势监听的时候就可以用到它了。

主要方法

手指按下去的时候
boolean onDown(MotionEvent e);

按压事件,onDown后调用。
void onShowPress(MotionEvent e);

手指抬起
boolean onSingleTapUp(MotionEvent e);

手指的移动事件
e1按下去的第一个点
e2移动的点
distanceX 距离上一次x的距离
distanceY 距离上一次y的距离
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY);

长按
onLongPress(MotionEvent e)

a点到b点滑动触发的事件
e1按下去的点
e2滑动后抬起来的点
velocityX 每秒x滑动的像素
velocityY 每秒y滑动的像素
onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)

使用

 private GestureDetector mDetector;

...
省略初始化代码
mDetector=new GestureDetector(getContext(),new MyGestureListener());
...

//或者onTouchEvent
  @Override
    public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();
        mDetector.onTouchEvent(event);
        return true;
    }

   public static class MyGestureListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onDown(MotionEvent e) {
            return super.onDown(e);
        }


        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            return super.onFling(e1, e2, velocityX, velocityY);
        }


        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            return super.onScroll(e1, e2, distanceX, distanceY);
        }
    }