android之手势、touch事件流程、事件传递机制

//定义一个手势识别器
private GestureDetector gsd;

gsd = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener(){
    //当手指在屏幕上滑动的时候
    @SuppressLint("WrongConstant")
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
       //屏蔽斜着滑
      if(Math.abs(e2.getRawX()-e1.getRawX())>100){
          Toast.makeText(getApplicationContext(),"请真确滑动",0);
          return true;
      }

      //屏蔽慢滑动的情况
        if(Math.abs(velocityX)<200){
            Toast.makeText(getApplicationContext(),"滑动太慢",0);
          return true;
        }
        if(e2.getRawX()-e1.getRawX()>200){
            //显示上一个页面,从左往右滑动
            return true;
        }
        if(e1.getRawX()-e2.getRawX()>200){
            //显示下一个页面,从右往左滑动

            shownext();
            return true;
        }
        return super.onFling(e1, e2, velocityX, velocityY);
    }
});
 //定义的抽象方法,在子类必须实现
    public abstract void shownext();

    //下一步的点击事件
    public void nextClick(View v){
        shownext();

    }

//使用手势识别器---在屏幕上有手势的时候调用

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

        return super.onTouchEvent(event);
    }

android之手势、touch事件流程、事件传递机制

android之手势、touch事件流程、事件传递机制

-----事件传递机制---

1.View执行dispatchTouchEvent方法,开始分发事件;

2.执行onInterceptTouchEvent判断是否是事件;

3.执行 onTouchEvent方法去处理事件;