其他分享
首页 > 其他分享> > 事件分发

事件分发

作者:互联网

1.View位置参数

    left=getLeft()  //view左侧距离父布局左上角的的相对坐标
    right=getRight();    //view右侧距离父布局左上角的的相对坐标
    top=getTop();    //view顶侧距离父布局左上角的的相对坐标
    bottom=getBottom();    //view底侧距离父布局左上角的的相对坐标

    x,y是view左上角坐标
    translationX,translationY 是view左上角相对于父容器偏移量(默认为0)

    ***view在平移时,top和left是原始左上角位置信息,其值不会发生改变,发生改变的是x,y,translationX,translationY


2.MotionEvent和TouchSlop
    
    MotionEvent:ACTION_DOWN   ACTION_MOVE   ANTION_UP
    
    TouchSlop被认为是滑动最小距离,距离太短时,系统不会判定为滑动。


3.VelocityTracker、GestureDetector、Scroller
        
      3.1  VelocityTracker:速度追踪,在View的onTouchEvent方法中追踪当前单击事件的速度。
    VelocityTracker velocityTracker = Velocity.obtain();
    velocityTracker .addMovement(event);
    
    velocityTracker .computeCurrentVelocity(1000);//计算速度   n像素/1000ms
    int xVelocity=(int) velocityTracker .getXVelocity();
    int yVelocity=(int) velocityTracker .getYVelocity();
    //回收
    velocityTracker .clear();
    velocityTracker .recycle();

      3.2 GestureDetector: 手势检测,辅助检测用户的单击、滑动、长按、双击
    //创建GestureDetector对象
    GestureDetector gestureDetectornew =  GestureDetector(Context context, GestureDetector.OnGestureListener listener);
    //接管View的onTouchEvent方法,在View的onTouchEvent里面添加
    boolean res = gestureDetector.onTouchEvent(event);
                return res;
    
    GestureDetector可以实现GestureDetector.OnGestureListener 的方法
    GestureDetector.OnGestureListener 方法介绍
    onDown:由一个ACTION_DOWN触发。
    onShowPress:长按或者滑动时才能触发,由一个ACTION_DOWN触发。
    onSingleTapUp:单击行为,由ACTION_UP触发
    onScroll:滚动,由一个ACTION_DOWN和多个ACTION_MOVE触发
    onLongPress:长按,触发长按时不会触发onSingleTapUp:onScroll:onFling:(可以设置gestureDetector.setIsLongpressEnabled(false );)
    onFling:快速滑动,由一个ACTION_DOWN和多个ACTION_MOVE和一个ACTION_UP触发

    GestureDetector可以实现GestureDetector.OnDoubleTapListener 的方法
    public void setOnDoubleTapListener(GestureDetector.OnDoubleTapListener onDoubleTapListener) ;
    GestureDetector.OnDoubleTapListener 方法介绍
    onDoubleTap:双击,与onSingleTapConfirmed不能共存
    onSingleTapConfirmed:单击
    onDoubleTapEvent:表示发生了双击行为,双击期间ACTION_DOWN  ACTION_MOVE  ACTION_UP都会触发此回调(一次双击会触发两次)

    实际开发中,可以不适用GestureDetector,如果要监听双击,就要使用GestureDetector。
    
    
        

标签:分发,GestureDetector,触发,velocityTracker,事件,ACTION,左上角,view
来源: https://blog.csdn.net/qq_42654067/article/details/100861743