android 简单明了的分析Android触摸事件,几张图带你看懂事件分发

android 简单明了的分析Android触摸事件,几张图带你看懂事件分发

 MotionEvent 主要分为以下几个事件类型:
  1. ACTION_DOWN 手指开始触摸到屏幕的那一刻响应的是DOWN事件
  2. ACTION_MOVE 接着手指在屏幕上移动响应的是MOVE事件
  3. ACTION_UP 手指从屏幕上松开的那一刻响应的是UP事件

其实,分发事件主要处理的是他的 ACTION_DOWN 事件,即手指触摸到屏幕的那一刻。

首先事件传递的流程是从上层依次传递到下层,直到这个事件被处理,请看下图:


上图中,当在事件发生点发生了事件,它的传递顺序是:ViewGroupA ->ViewGroupB ->View。

来看看这三者各具有的方法,请看下图:


在事件传递机制中,必须讲解的三个方法:

  1.public boolean dispatchTouchEvent(MotionEvent ev)方法,这个方法作用主要是用来分发事件。也就是说,当一个事件传递当前View的dispatchTouchEvent方法里面,这个方法可以决定将事件分发到哪里去,这里的分发到哪里去表示有两个意思:1.将事件分发到子View(如果有子View的话);2.将事件分发到分发到自己的onTouchEvent方法里面去消耗。
  2.public boolean onInterceptTouchEvent(MotionEvent ev)方法,这个方法的作用是用来决定当前的View或者ViewGroup是否拦截这个事件,如果返回true的话,那么就表示拦截;反之,表示不拦截。前排预警一下,这个方法有很多的坑,不是返回一个true或者false那么简单。
  3.public boolean onTouchEvent(MotionEvent event)方法,这个方法是具体消耗事件的方法,如果返回true的话,表示当前的View已经将这个事件消耗了。

接下来看这三者之间是如何进行分发的:

明白了吗?是不是三张图看懂事件分发。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值