Android 事件分发机制
2016-03-10 09:41
609 查看
Touch事件一般调用过程总结
用户点击屏幕产生Touch(包括DOWN、UP、MOVE,本文分析的是DOWN)事件 -> InputManager -> WindowManagerService.dispatchPointer() -> IWindow.Stub -> ViewRoot.dispatchPointer() -> PhoneWindow.DecorView.dispatchTouchEvent() -> Activity.dispatchTouchEvent() -> PhoneWindow.superDispatchTouchEvent -> PhoneWindow.DecorView.superDispatchTouchEvent -> ViewGroup.dispatchTouchEvent() -> ViewGroup.dispatchTransformedTouchEvent() -> 子View.dispatchTouchEvent() -> 子View.onTouch() -> 子View.onTouchEvent() -> 事件被消费结束。(这个过程是由上往下传导)
如果事件没有被子View消费,也就是说子View的
用户点击屏幕产生Touch(包括DOWN、UP、MOVE,本文分析的是DOWN)事件 -> InputManager -> WindowManagerService.dispatchPointer() -> IWindow.Stub -> ViewRoot.dispatchPointer() -> PhoneWindow.DecorView.dispatchTouchEvent() -> Activity.dispatchTouchEvent() -> PhoneWindow.superDispatchTouchEvent -> PhoneWindow.DecorView.superDispatchTouchEvent -> ViewGroup.dispatchTouchEvent() -> ViewGroup.dispatchTransformedTouchEvent() -> 子View.dispatchTouchEvent() -> 子View.onTouch() -> 子View.onTouchEvent() -> 事件被消费结束。(这个过程是由上往下传导)
如果事件没有被子View消费,也就是说子View的
dispatchTouchEvent返回false,此时事件由其父类处理(由下往上传导),最后到达系统边界也没处理,就将此事件抛弃了。
相关文章推荐
- Android 应用层View绘制流程
- Android结束进程的方法详解
- Android 数据库管理— — —更新数据
- Android Studio 新建drawable-hdpi、drawable-mdpi等
- Android Couldn't load BaiduMapSDK
- Android防止重复点击的解决办法
- Android 数据库管理— — —添加数据
- LeakCanary Android 和 Java 内存泄露检测 ,OOM检测
- android开发时gen和bin目录的SVN管理(转)
- Android SDK,ADT,以及API的理解 .
- Android实现推送方式解决方案
- Android开发之SQLite数据库
- Android内存泄漏分析大全
- android日期选择器,从底部弹出的日期选择器,有点像IOS日期选择器
- Android SDK Manager 的介绍
- AndroidStudio运行项目出现Failure [INSTALL_FAILED_DEXOPT]
- Android 暂停和恢复Activity
- android 开发 GitHub Android Librarys Top 100 简介
- AndroidStudio 截取手机屏幕
- Android Studio 新建项目的R文件丢失的解决方法