android framework 触摸屏事件传递

对于像我这样刚入门的Android程序员,如果想大致弄清楚触摸屏事件传到用户界面的过程,我觉得需要弄清楚以下几个部分:

一 Activity, Window,View之间的关系

二  Window,WindowManager,WindowManagerServer的创建和消息传递的基本规则

三 本地类 InputReader , InputDispatcher 的创建,对触摸屏事件的读取和派发

四 触摸屏事件从InputDispatcher怎么传递到Window

五 触摸屏事件在ViewGroup/view中的传递

为了看懂相关代码,还有两个android比较重要的框架的实现:JNI 和 Binder。 这两种功能,我个人觉得,不必要很精通,能知道从哪里找到调用的方法即可。

首先,把各种涉及到的重要的接口名/类名列出来,混个脸熟。

Activity

Window

PhoneWindow

DecorView

ViewRoot ( android4.0 中为 ViewRootImpl )

WindowManager

WindowManagerImpl

LocalWindowManager

WindowManagerServer

InputManager

InputReader

InputDispatcher

接下来,一起看看各个部分。

一 Activity, Window,View之间的关系

Activity , 只要写过Android程序的人都知道,android的四大金刚之一。Activity是应用程序的载体。它并不参与界面的显示,界面的显示都交给Window来管理。

PhoneWindow是从Window派生来的,Window是一个抽象类。每个Activity中有且只有一个PhoneWindow。(至于PhoneWindow的作用,这里我暂时还无法很准确地归纳,希望有牛人赐教)

DecorView,DecorView是一个扩展的FrameLayout的类,是窗口中所有View的根View。

ViewRoot, 每个Window都会对应一个ViewRoot对象。ViewRoot从Handle派生过来,处理各种其它模块发送的事件。比如触摸屏事件就是从其它模块发送到ViewRoot后,由ViewRoot的handleMessage()方法处理的。

(未完待续,本人初学,如果有问题,敬请指出,一起讨论)

android framework 触摸屏事件传递相关推荐

  1. 【Android】为啥事件传递这么频繁却不会造成内存抖动

    学而不思则罔,思而不学则殆 [Android]为啥事件传递这么频繁却不会造成内存抖动 引言 测试 测试代码 测试一 两次手指按下起来 测试二 - 不同的页面测试 测试三 同一个应用杀进程测试 测试四 ...

  2. android touch事件坐标原点,图解Android:Touch事件传递机制

    前言 Android事件管理机制是一名专业Android研发工程师必须要了解的核心知识之一,深入了解一下该机制无论对我们日常开发还是找工作,乃至于对我们的架构思想都有很大的帮助.Android中我们用 ...

  3. Android FrameWork——Touch事件派发过程详解

    http://blog.csdn.net/stonecao/article/details/6759189

  4. android viewgroup 事件,android中viewgroup的事件传递分析

    在上一篇中我们分析了从view的dispatchTouchEvent到onTouchListener的onTouch回调到onTouchEvent到onClickLisener的onClickandr ...

  5. Android事件传递机制(转)

    Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作.所有这些都构成了Android中的事件响应.总的来说,所有的事件都 ...

  6. Android事件机制:事件传递和消费

     Android中的事件在表现形式上有很多,如onTach.onClick和onLongClick等,在具体微观上的表现形势有action_down.action_move和action_up等. ...

  7. Android事件传递(分发)机制

    Android事件的构成: 在android中,事件主要包括点按,长按,拖拽,滑动等等,另外点按还包括点击和双击.所有这些都构成了android中的事件响应.总的来说所有的事件都由以下三个部分组成: ...

  8. android方向触摸事件,Android触摸事件传递机制,这一篇就够了

    整个触摸事件牵涉到的是,Activity,View,ViewGroup三者的传递机制. 这个触摸事件就是从外层往内层一层层的传递. 整个传递机制,分为3个步骤:分发,拦截,和消费. 1. 触摸事件的类 ...

  9. Android自定义View2--触摸事件传递机制

    转载文章 :https://juejin.im/post/6844904041487532045#heading-6 https://juejin.im/post/684490389410388378 ...

最新文章

  1. 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)
  2. C语言实现ifconfig获取网卡接收和发送流量统计
  3. python学成需要多久-小白学python怎么快速入门?多久能完成一个项目?
  4. 济南学习 Day2 T2 am
  5. 汇编原理实验 --查找子字符串的位置
  6. JavaScript 正则表达式 学习笔记(一)
  7. 使用 Exceptionless 作为 Log Server 搭配 NLog 记录系统日志
  8. 这三个Offer,你怎么选?
  9. csgo 机器人模式_分享一个休闲模式机器人Bug
  10. 写一个简单易用可扩展vue表单验证插件(vue-validate-easy)
  11. 没有绝对的技术,只有不停的创新
  12. php amp 26472,汉字与UNICODE的转换 通过文件操作
  13. Java往前拼接,利用Java程序将字符串进行排序与拼接
  14. SQL内连接和外连接的区别、where和on的区别详细介绍
  15. CISSP考试认证心得
  16. 《麻辣江湖》即将上线!
  17. 每个人都在经历淘宝的“大数据杀熟”,这5个办法巧妙避开
  18. Vue前端框架选型论证,字节跳动高级java开发面试
  19. 女生学计算机专业好吗_百度文库,没考上高中的女生学什么最好
  20. VMware虚拟机net模式无法共享主机ip

热门文章

  1. Newtonsoft 反序列化字符串
  2. 巧解汽车冬季病 启动无力别“轰油”热车
  3. 以汉字开头,以某个词结尾的一段文字的正则
  4. redis 辅助工具包 - redis-aux
  5. 软件巨头Salesforce带来AutoML杀手TransmogrifAI
  6. asp.net Framework 与 asp.net core 知识
  7. linux svn官网,linux svn
  8. python怎么创建函数_如何在python中创建自己的map()函数
  9. mysql如何保证数据不丢失_23 | MySQL是怎么保证数据不丢的?
  10. android 串口键盘_侧面滑盖+实体全键盘的安卓手机,能走向大众化吗?