设为首页 加入收藏

TOP

Android 用户事件输入路径(Message/Event, Dispatch Path)
2014-11-24 08:42:11 来源: 作者: 【 】 浏览:0
Tags:Android 用户 事件 输入 路径 Message/Event Dispatch Path

1 输入路径的一般原理


(1)用户输入根据系统状况是否应该派送。如在ScreenOff的情况下,在按键属于特殊按键的情况下等


(2)是否有拦截Listener


(3)对按键事件来讲,是否存在输入法


(4)是否是焦点终点


(5)是否为焦点切换按相关键


这些情况都是设计输入路径需要考虑的基本条件。


1.1一般的输入路径设计


该输入路径实际上是指的按键消息(MSG_KEYDOWN,MSG_KEYUP, MSG_LongPress)的输入路径,即从活动主窗口到焦点窗口所经历的路程。


Android


将信息输入路径分为两步:


Step 1)窗口管理器将信息发送到活动窗口


Step 2)活动窗口通过缺省处理函数将该消息一层层的传递到焦点。


这样应用程序可以在活动View的处理函数中来预先处理用户输入信息,从而增强应用对用户信息的控制力。


Android


传递路径是通过View的缺省处理函数Onxxx来完成。通过ActiveView ->focus->focus->focus的链条关系,一级一级的将按键消息MSG_KEYDOWN,MSG_KEYUP, MSG_CHAR等传递到focus窗口。


Android


此时用户按键输入先发送到输入法窗口,经过输入法管理器处理,过滤后将输入法产生的结果放置到焦点View。


1.3输入系统整体流程


下面示意图是Android输入系统的数据流途径,通过WM的输入系统线程收集消息,分发到Focus Activity消息队列,然后通过消息系统派发。


Android


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android锁屏与解屏相关代码分析 下一篇纯Java开发的游戏引擎V0.4--DEMO2..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·【C语言】动态内存管 (2025-12-27 06:23:20)
·C语言中的内存管理 - (2025-12-27 06:23:16)
·C语言指南:C语言内 (2025-12-27 06:23:14)
·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)