Android回顾--(二十八)View的事件传输与分发机制

事件的传输机制:

事件:手机触摸屏幕的一切操作均称为事件。事件的传输机制指的是手指在屏幕触摸之后,这个事件的传输与消费的方向

为什么要使用事件的传输机制?

解决冲突

事件传输机制中重写的三个方法:
  1. dispathTouchEvent:事件分发 return false;//不分发
  2. onInterceptTouchEvent:事件拦截

如果拦截(return true)了,事件就不会再继续想下传递,就从拦截的这个容器里面开始消费这个事件,一直往上消费。除非某一个容器消费了这个事件返回了true,事件就不会再被消费了。

  1. onTouchEvent:事件消费

当前事件开始消费,会继续向下进行传输。return true:事件被消费,事件不再向下传输,如果是返回默认值,根据这个容器是否可以获取焦点来判断这个事件是否被消费。

结论:

事件在传输时会按照从上到下的顺序进行传输-->管道式传输
事件在进行消费是会进行从下到上的顺序进行消费-->冒泡式消费

注意:

  1. 返回值的super--表示将事件继续向下传输。要让click执行的话,必须调用super.onTouchEvent(event)。只要任何一个地方的onTouchEvent返回了true,其他所有的事件都不会再执行了。
  2. 在事件的传输过程中,如果是disPathTouchEvent返回了true,那么整个链路都是没有办法来消费这个事件的。如果onInterceptTouchEvent返回了true,那么当前容器的元素是没有办法来获取这个事件的,事件从拦截的那个开始一直向上传输,途中如果遇到onTouchEvent返回来true,那么他消费这个事件其他的就不能消费这个事件了。如果onTouch没有调用super.onTouchEvent的话,那么这个事件是没有办法传输执行的。
  3. 从上到下传输,从下到上消费,途中一个消费,其余的都没法消费。
  4. 当前的容器是否能消费这个事件是根据容器本身是否具有消费这些事件的属性决定的

你可能感兴趣的:(Android回顾--(二十八)View的事件传输与分发机制)