您的位置:首页 > 其它

关于事件拦截机制-自己的理解

2016-10-07 14:08 141 查看
事件传递机制:

事件是指触摸事件,都是发生在控件身上的,也就是说发生在view身上.我们需要知道view里面有哪些类可以处理事件.

首先有一个方法 dispatchTouchEvent方法,它分发事件就是直接把事件传递给自己的onTouch方法.因为view没有孩子,只需要自己处理就可以了.onTouchEvent

一个是分发事件一个是处理事件

 

安卓里面还有一个空间 viewGroup
是一个view的容器

继承view,所有view的两个方法也会继承

看下它的dispatchTouchEvent 这个里面会去做真正的事件分发,它里面会有一个for循环,找孩子,把事件分发给还在

然后,在分发事件之前会调用一个拦截事件的方法 onInterceptTouchEvent

这个方法默认返回的是false,表示默认不拦截事件.view没有孩子控件,没有这个方法

 

安卓里面的事件是分组的,down move up 这是一组事件

一组事件的传递机制

从外往内传递事件来了 ,最外层viewGroup先得到事件,首先判断自己是否需要拦截事件,默认是不拦截,事件就往下传递了,做for循环,根据down的时候得到的xy坐标,传递给对应的子控件.

最终传递到view view在onTouch里面返回true表示需要处理事件,如果这个时候返回false,就把事件往上传递. 传到上面的viewGroup,看自己的onTOuchEvent返回什么

viewGroup的onTOuchEvent方法会在什么时候调用? 1.一开始自己拦截事件就直接走这个方法;2.孩子不需要事件,会走自己的方法;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: