android事件处理

来源:互联网 发布:在线java编译器 编辑:程序博客网 时间:2024/06/05 09:27

1,首先是Activity先接收到事件,系统调用Activity的dispatchTouchEvent,默认的调用的
是super.dispatchTouchEvent(ev);这就一层一层的向上传递,直到顶层的ViewGroup,这个
函数是决定该事件是否被分配,也就是由自己处理,

 -》a,返回true,则由自己处理,整个调用链返回的是true,也就是在Activity中最终返回的是
 true,这其中记录着到底是那个View返回的true,下面的额Action move、Action up,
 都有该View的onTouchEvent处理,也就是以后的事件不再向下传递了,子View不会再收到
 事件。
 -》b,返回false,如果该view是ViewGroup类型的话,则调用该view的onInterceptTouchEvent
 ,该函数的作用是:是否拦截该事件,它也有两种返回结果,
   -》1,返回true,表示拦截了该事件,后续的事件也交由该view的onTouchEvent处理,
   -》2,返回false,表示不拦截该事件,则该事件在该view中的处理完成,后续的事件也不
   会由该view处理,
2,整个dispatchTouchEvent(ev)调用后,系统就知道了后续事件到底交给谁处理,以后的事件直接都交由
该view处理了,不会再经由其他view了。