当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > Android事件分发

Android事件分发 时间:2018-09-26      来源:未知

当用户触摸屏幕时,系统会对触摸事件做出相应的相应,这个事件会产生一个MotionEvent,系统根据一定的规则将其传递给View进行处理,这个过程就是事件分发机制了。

事件的传递分为两个阶段,即捕获阶段和冒泡阶段。捕获阶段:事件先由外层的View接收,然后依次向内层传递,直到传递到小的View,捕获阶段完成;冒泡阶段:也就是捕获阶段的逆过程,先由小的View开始向外冒泡,直到将事件传递到外层View。

在捕获和冒泡的过程中,可以控制事件是否被拦截,是否继续分发,还是做出响应后消费掉,这里是通过三个方法来控制事件的传递和消费机制的,系统又根据方法的返回值来进行相应的控制:

事件分发方法:publicbooleandispatchTouchEvent(MotionEventev)

当系统监听到事件时,首先由Activity捕获到,如果该方法中返回true,表示事件将不进行分发了,并且事件自身被消费掉了,此时事件分发过程结束;如果该方法返回为false,表示事件还是不会向下分发,而是由上层的onTouchEvent方法进行消费;如果该方法返回为 super.dispatchTouchEvent(ev),事件将分发给本层的事件拦截onInterceptTouchEvent 方法进行处理。

事件拦截方法:publicbooleanonInterceptTouchEvent(MotionEventev)

如果该方法返回 true,表示将事件进行拦截,并将拦截到的事件交由本层控件的onTouchEvent进行处理;如果该方法返回是false或super.onInterceptTouchEvent(ev),则表示不对事件进行拦截,并将事件分发到子View,由子View的dispatchTouchEvent进行处理。

事件响应方法:public booleanonTouchEvent(MotionEventev)

如果该方法返回true,表示onTouchEvent处理完事件后消费了此次事件,此时事件终结,将不会进行后续的冒泡;如果onTouchEvent返回false或super.onTouchEvent(ev),事件在onTouchEvent中处理后继续向上层View冒泡,且由上层View的onTouchEvent进行处理。

上一篇:推开HTML5的大门

下一篇:计算机中的大小端存储

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部