Android笔记--整理我所理解的Touch 事件分发机制

1、Android 中与 Touch 事件相关的方法有:dispatchTouchEvent(MotionEvent event)、onInterceptTouchEvent(MotionEvent event)、onTouchEvent(MotionEvent event)。其中参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息,例如触摸的位置、触摸的类型以及触摸的时间等。该对象会在用户触摸手机屏幕时被创建。

2、dispatchTouchEvent(MotionEvent event)主要用来分发事件,函数主要作用是来决定当前的事件是交由自己消费处理,还是交由子控件处理。

其中“分发”是指一个触摸或点击的事件发生,分发给当前触摸控件所监听的事件(如OnClick、onTouch等),进而来决定是控件的哪个函数来响应此次事件。

3、onInterceptTouchEvent(MotionEvent event)主要来决定当前控件是否需要拦截传递给子控件,如果返回True表示该控件拦截,并交由自己父类的dispatchTouchEvent处理消费,如果返回false表示不拦截,允许传递给子控件处理。

4、onTouchEvent(MotionEvent event) 此函数负责执行事件的处理,负责处理事件,主要处理MotionEvent.ACTION_DOWN、MotionEvent.ACTION_MOVE 、MotionEvent.ACTION_UP这三个事件。

5、一次完整的Touch事件,应该是由一个Down、一个或零个Up和若干个Move组成的。

6、当触摸一个View控件,

首先会调用这个dispatchTouchEvent(MotionEvent event)函数中的onTouch方法,

然后判断三个条件:判断View控件是否注册了OnTouchListener对象的监听、判断View控件是否能被点击、判断回调注册在View控件上的mOnTouchListener对象的onTouch方法返回值,

如果三个条件都返回真,那么dispatchTouchEvent返回真,Touch事件会分发给当前 View 由 dispatchTouchEvent 方法进行处理,同时事件会停止向下传递;返回假,Touch事件返回给 Activity 的 onTouchEvent 处理或者父 View 的  onTouchEvent 进行处理。

就是当dispatchTouchEvent(MotionEvent event)在进行事件分发的时候,只有前一个action返回true,才会触发后一个action。

7、mOnTouchListener对象的onTouch(this, event)这个判断很重要,决定能否回调OnClickListener接口的onClick函数。进而执行用户自定义代码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值