事件分发机制

来源:互联网 发布:c语言单引号字符 编辑:程序博客网 时间:2024/06/06 12:45

一、前言


最近一直对事件分发机制理解有点模糊,今天看了一个博客,感觉有点渐渐的清晰,遂提笔记下,以便今后查阅。

二、总结


事件分发机制,就是发生点击事件之后,父view会遍历自己所有的子view,来查找到底哪个view处理此事件,在这个过程中,会出现三个方法:dispatchTouchEvent(MotionEvent ev),oninterceptTouchEvent(MotionEvent ev),onTouchEvent(MotionEvent ev)。下面就简单介绍一下这三个方法:
1、事件分发
dispatchTouchEvent(MotionEvent ev):这个函数负责事件的分发,决定事件是否交给onInterceptTouchEvent(MotionEvent ev)来处理。
当返回true时,不会继续分发事件,内部处理所有事件(ACTION_DOWN,ACTION_MOVE,ACTION_UP)
当返回false时,会继续分发事件,内部只处理了ACTION_DOWN事件。
当返回super.dispatchTouchEvent时,由onInterceptTouchEvent来决定事件的流向,
2、事件拦截
onInterceptTouchEvent(MotionEvent ev):负责事件的拦截,决定事件是否传给子view,这个方法是viewgroup独有的.
当返回true时,拦截此事件,然后交给自己的onTouchEvent来处理。
当返回false时,不拦截此事件,交给子view来处理
3、事件响应
onTouchEvent(MotionEvent ev):事件最终到达的地方
当返回true时,表示onTouchEvent处理完事件之后消费了此事件,此事件终结,
当返回false时,不响应此事件,那么该事件将不断的向上层view的onTouchEvent传递,知道某个view的onTouchEvent方法返回true,如果到了顶层仍然返回false,那么认为此事件不被消耗。将会交于activity的onToucEvent来响应。

三、最后贴上两个博客,吃水不忘挖井人

传送门
传送门
这里写图片描述
这里写图片描述

0 0
原创粉丝点击