我们知道Android的View是一个树型结构,ViewGroup之下可以再由ViewGroup也可以再有View。而Android的事件既是按照这个树型结构去传递和处理的。

Android的事件机制可以分割为分发、处理两段。


一、事件分发

事件分发过程中有两个关键方法
dispatchTouchEvent 分发事件
onInterceptTouchEvent 拦截事件(此方法只出现在ViewGroup中,View中没有)

当一个事件被触发首先会从根节点开始按照dispatchTouchEvent >>> onInterceptTouchEvent(如果有的话)的顺序去执行,
若是onInterceptTouchEvent返回true,则会拦截下事件,直接由当前这个层级的节点去选择是否处理事件,不再向下层传递。

二、事件处理

事件的处理,实际上就是我们非常熟悉的onTouchEvent方法。
前面说到一个事件被触发会按照dispatchTouchEvent >>> onInterceptTouchEvent(如果有的话)的顺序去执行,而执行到最底层节点将dispatchTouchEvent >>> onInterceptTouchEvent(如果有的话)执行完后则会执行这个节点的onTouchEvent方法来处理事件。这时该最底层节点有两个选择:

1、处理这个事件。(onTouchEvent返回true)

2、交给上层去处理(onTouchEvent返回false)。

如果选择返回True,那么这个事件就到此为止了,如果选择返回False,则会将这个事件回传会上层的onTouchEvent。这时上层就要面临相同的两个选择了。

三、总结

知道了上诉事件的分发和处理流程后就可以知道,Android的事件可总结为以下流程:
dispatchTouchEvent >
onInterceptTouchEvent(如果有的话) (如果返回true,则不再分发)>
dispatchTouchEvent >
onInterceptTouchEvent(如果有的话) >
onTouchEvent (如果返回true,则不再传递)>
onTouchEvent

更多相关文章

  1. Android中使用animation的方法
  2. Android禁止EditText自动弹出软键盘的方法及遇到问题
  3. Android 获取未读短信同时,一并获取该短信内容的方法
  4. Android Studio中获取SHA1或MD5的方法
  5. [转]JS调用Android里面的方法,Android调用JS里面的方法
  6. Android中常用基本控件的使用方法和步骤(.txt)
  7. 一点见解: Android事件分发机制(三)
  8. Android中的多击事件

随机推荐

  1. Android追加写入文件的几种方法
  2. andorid RecyclerView下拉刷新,上拉加载更
  3. android键盘的监听
  4. Android(安卓)编译环境下常用命令
  5. Android(安卓)Toast
  6. Android(安卓)签名信息读取
  7. Android低功耗蓝牙(BLE)随笔(二)
  8. Android(安卓)intent跳转工具类
  9. zz Android(安卓)HTML5 video play
  10. android中的spinner