本文来自刘兆贤的博客_CSDN博客-Java高级,Android旅行,Android基础领域博主 ,引用必须注明出处!
前面讲过Wms、Ams与Activity的一系列交互,包括创建过程、消息传递、窗口展示等,紧接上篇介绍最终的实现者-窗口和View,上篇对窗口已经有了比较多的介绍,本篇我们再对View再更深一步的了解。
首先明确下View的功能,主要用来展示画布即交互的图片背景等,而且承接各种手势动作消息,以及这两者之间的一系列内容;其他的属于窗口的概念;也可以说内容展示除了窗口就是View。
消息分发指:1、将触摸、键盘输入等消息转化成操作系统可识别的信号2、判断按键消息直接发给当前窗口进入View,触摸消息根据坐标匹配窗口3、最终处理消息。
界面绘制指:1、计算视图大小执行measure方法2、为视图分配位置执行layout方法3、将视图绘入窗口即draw方法。而View所有的功能将围绕这两点展开。
就第一点先说说,用户消息类型指Wms将硬件物理消息转化成统一格式消息,分为三类:按键消息、触摸消息和轨迹球消息(此消息API的Demo中可见,游戏中比较常见)。而消息的组成由以下三项:Action(上和下)、KeyCode(键代码0-9a-z)、Repeat(重复次数)。PS:由于安卓系统没有苹果系统全面,按键消息不断发出,安卓需要自己定义滑动速度和动作逻辑如消息延迟动作+延迟时间(500ms),因此安卓开发者也可以对此进行拓展。按键消息只有上和下,而触摸消息比较多样化,下面就拿它作为例子讲一讲:
Action:屏幕一般支持多点触控,比按键多出POINTER_DOWN2、POINTER_UP2等
EventTime和DownTime:消息发生时间和按下时间,用以区别按键和滑动事件
Pressure:力度大小,可大于1
Size:电容触摸的面积大小,0-1之间
g