美文网首页
GestureDetector使用

GestureDetector使用

作者: 金馆长说 | 来源:发表于2017-04-07 08:28 被阅读78次

    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);
            }
        }
    

    相关文章

      网友评论

          本文标题:GestureDetector使用

          本文链接:https://www.haomeiwen.com/subject/tebcattx.html