事件分发

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。
    
    
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值