美文网首页
事件分发原理(不包括实战)

事件分发原理(不包括实战)

作者: 落叶随风花落入泥 | 来源:发表于2017-09-14 14:31 被阅读0次

    事件分发

    事件分发,不论在面试还是在项目中出现的频率都是很大的,我对事件分发机制原理一直是模棱两可的,所以花了一点时间彻底梳理一下,以备自己遗忘后可以快速的记起。

    事件分发流程图

    屏幕快照 2017-09-14 下午1.32.11.png

    流程图解析

    1 处理事件分发有三个层级  Activity 层   viewGroup 层   view 层
    2 处理事件有三个方法,dispatchTouchEvent  onInterceptTouchEvent   
     onTouchEvent 
    3 dispatchTouchEvent 如果是返回的是true,表明在本层进行消费,如果是
     false,则表明不消费此事件(不接受,所以其子控件也就不会接收到这个事
     件,并进行相应的操作),如果是返回的是true,说明这个层级是消费这个事件
     的,这个时候调用的是onIntercepTouchEvent方法,这个方法返回的是true,说
     明对这个事件进行拦截,不给自view了,直接调用本层级的onTouchEvent方
     法,对事件进行消费,如果是返回的false说明是不拦截这个事件,传递给子
     view,会调用子view的dispatchTouchEvent方法,这个方法也会返回一个值,
     如果是true,说明我这要消费,这时会调用onTouchEvent的方法,进行事件的
     处理。如果是false,表示我也不干,这时候会调用上一层级的onTouchEvent方
     法,它也会返回一个值,如果是true,说明这个活我干了,你不用管了。如果是
     false就说明,我也不干,接着返回上衣层级的onTouchEvent方法,这里进行着
    上述同样的操作。如果都不消费最终会交给activity终止此次事件。
    

    相关文章

      网友评论

          本文标题:事件分发原理(不包括实战)

          本文链接:https://www.haomeiwen.com/subject/ivqpdxtx.html