onTouchEvent()表示对事件处理的方法
如果事件传播到该类中 表示该类调用onTouchEvent()方法处理该事件
1. 如果该函数返回false
表示不进行事件的处理 将事件进行回传(回传给上层的view或者是viewGroup, 由上层的view调用自己的onTouchEvent()方法处理,如果上层的view也未进行事件处理onTouchEvent() 返回false,那么事件消失 并且接受不到下一次事件 例如:没有处理down事件就不能处理up事件);
2. 如果该方法返回true
表示对当前的事件进行处理 事件只能被处理一次.
注意:onTouchEvent()返回false与返回super.onTouchEvent(event) 意思一样
dispatchTouchEvent() 分发事件的方法 不管是view还是viewGroup都具有分发事件的函数.
一般情况ViewGroup中将事件分发给子view View中将事件分发给自己.当事件触发时activity将事件传递到layout layout调用自己的分发方法将事件分发给具体的子控件.
子控件也具有分发方法 但是子控件只能分发给自己
接着获取分发的事件调用onTouchEvent()方法处理事件, 如果返回true 表示事件会分发给当前的view的dispatchTouchEvent进行处理 并且会停止事件向下传递分发. 一般情况都不会修改返回值 改变正常的事件分发流程.
onInterceptTouchEvent事件拦截的方法
事件传递给layout 如果layout不进行拦截 通过拦截的方法 事件就被分发给具体的子控件。
子控件就会执行自己的分发和onTouchEvent()方法处理事件 如果子控件的onTouchEvent()方法并且对事件处理 事件回传 执行layout中的onTouchEvent() 如果layout中也返回false 事件消失; 如果layout中onTouchEvent()返回true 那么后续的事件也会直接交给layout处理
返回true 表示拦截当前的事件并且交给当前视图的onTouchEvent()处理返回false 表示不拦截 按照正常的事件传播机制。