原创

Android事件分发机制(三)——View的事件分发

一、View事件分发的流程图

View的事件分发.png

二、View的事件分发源码分析

事件从ViewGroup分发到View之后,View 是如何进行处理的。首先进入的是dispatchTouchEvent()方法。

View的dispatchTouchEvent源码.png

如果当前的事件为ACTION_DOWN,就会停止滚动操作。

如果当前事件符合安全策略的话,就会进入处理逻辑;否则就会返回false。

如果当前事件为鼠标进行滚动条的拖动操作的话,就会返回为true。

接下来进行事件监听的判断,如果符合相关的判断条件,则返回true。

如果result为false,并且onTouchEvent()方法返回为true的话,则返回为true。

分发逻辑代码.png

随后进行onTouchEvent()方法的逻辑。

onTouchEvent方法源码分析.png

系统首先获取当前触摸的位置,标识,状态。

如果当前的View处于禁用状态的话,onTouchEvent的返回值就是取决于View 的可点击状态。

如果当前的代理事件不为null,并且当前处理事件的onTouchEvent()方法返回为true,则onTouchEvent()就返回为true。

如果当前的View是可点击状态,或者允许显示TOOLTIP的话,就会直接返回为true。switch语句是系统默认的事件处理逻辑。

当上面所有的判断否不符合的情况下,就会返回为false。

学海无涯苦作舟

个人博客:http://www.coderlearning.cn/

我的微信公众号.jpg

进阶知识
  • 作者:HunterArley (联系作者)
  • 发表时间:2019-12-16 10:06
  • 版权声明:本网站部分内容转载于合作站点或其他站点,但都会注明作/译者和原出处。如有不妥之处,敬请指出。
  • 公众号转载:请在文末添加作者公众号二维码