首页 技术 正文
技术 2022年11月18日
0 收藏 313 点赞 4,283 浏览 59664 个字

本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!

前面讲过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之间

getX(size)和getY(size):触摸点的x和y坐标

按键消息派发过程:比较简单,不再用图形展示,直接写步骤;先说长按事件

1、生理长按(native C++中定义,区别于长按延迟500ms)时间,首次按下不松手,会启动二次长按

2、按下后,如View类无处理,且来自于DPAD_CENTER,则View启动异步消息加调onLongClick事件

再说点击事件

1、底层得到按键消息后,回调ViewRoot的InputHandler中的handleKey函数,再调用dipatchKey函数,发送DISPATCH_KEY消息,让deliverKeyEvent方法处理:

一、执行mView.dispatchKeyEventPreIme():在输入法之前处理,这样重写此方法返回true,可以拦截Ime

二、派发消息到输入法中

三、执行deliverKeyEventToViewHierarchy,传递给真正要处理的视图;此时还要做几件事:判断消息是否导致离开触摸模式、将消息给到根View如应用窗口的DecorView或非应用窗口的ViewGroup(依次处理音量键、系统快捷键、Activity、PhoneWindow、最后View)、未处理消息是否会引起焦点切换、找到获得焦点的view

PS:上面讲到派发事件到根视图,其中有项是到Activity,先执行dispatchKeyEvent回调onUserInteraction、Window对象的superDispatchKey、KeyEvent.diapatch如无调用否则停止-调用state.startTracking对消息跟踪和回调receiver.onKeyLongPress完成长按处理代码,继承后不执行下步,再执行onKeyDownView中-按键消息是DPAD_CENTER或KEYCODE_CENTER代表确定,判断是否可按,是否可长按,longClick和showContextMenu发生在这里;Activity中-处理Back键,判断mDefaultKeyMode如DEFAULT_KEYS_DISABLE什么也不干、DIALER拨号程序、SHORTCUT快捷键、SEARCH_LOCAL/GLOBAL本地或全局搜索处理相关逻辑,键转字符keyMode,启动相关Activity;PhoneWindow-记得前面讲过,再讲一遍,依次判断执行音量键、播放器键(一般没有)、相机键、菜单键、拨号键、搜索键和onKeyUp(同前者)

按键与触摸最大区别在于:

前者需要先经过Wms(如上面括号里执行的),后者直接进入View;

其次前者是父视图(super.dispatchKeyEvent)先处理消息,然后才是子视图,后者恰恰相反;

前者有系统键,后者要确实处理View,而查收的方法。

触摸消息发生时,区分应用窗口和非应用窗口,

前者对应PhoneWindow的DecorView类型,如果存在Callback对象,调用dispathTouchEvent,则执行Activity的,然后再执行Window的,最后调用mDecorView.onTouchEvent(当然之前要计算是否拦截),不存在则直接调用ViewGroup的

后者对应ViewGroup类型,如果onInterceptTouchEvent未拦截(默认不拦截),则直接分发给子View。

PS:如利用onTouchEvent却没有调用父类此方法,则触摸、点击和长按事件均不会触发,过程tap->press->longpress。

View的绘制上面已讲,那么诱因是什么?1、内部状态发生变化调用rqeustFocus   2、添加或删除子View调用requestLayout   3、大小发生变化调用invalidate,后两者可见性发生改变时也会涉及到。

列举几个比较常见的方法作为结束:

refreshDrawableList:为视图赋予不同的Drawable对象

onFocuseChanged:处理焦点变化的逻辑,输入法与View间通过window来交互

setVisibility:设置可见性,可见到不可见不会调用requestLayout,而到GONE则需要调用

invalidate:对View树重绘,一般requestLayout之后均会调用,顺序先根后子

requestFocus:使某视图获得焦点,直接调用或方向键移动

measure:measuredHeight=bottom-top measuredWidth=right-left EXACTLY=MATCH-PARENT,不可重载 AT_MOST=WARP_CONTENT,UNSPECIFIED不确定;慎用weight(重写指子类功能变异,重载指子类功能变多)

generateDefaultLayoutParams:如ViewGroup无重载,则设置margin无效;生成默认LayoutParmas

layout:布局控件,获得子View宽度、根据gravity决定位置、为子View分配位置

draw:绘制界面;dispatchDraw绘制子视图;需要Surface配合,分两种,一种是显卡一种是CPU模拟的,从中获得Canvas对象;onDrawScrollBar绘制滚动条;设置scale和matrix,以及translatet和rotate

View的功能和特色就如上所述,至于发挥的空间,则在各大App均有表现,需要自己慧眼识珠了。

最后给出屏幕绘图的过程

有关消息在硬件层的分发到此为止,View内分发的分析,请看下面

实例分析:Android中级第十一讲之MotionEvent的分发、拦截机制分析

有的同学嫌本篇介绍的太少,那再就拿一张图来讲讲消息分发机制

注:此View写在xml中,未写布局包含,是一个LinearLayout。

大家可以看到当View执行dispatchTouchEvent后,一般未处理会传给基类处理(默认是framelayout,而mainView还有linearlayout父类),然后传给DecorView的基类处理,最后phoneWindow和Activity;最下面绿色圈住的,指下一节使用MessageQueue来处理用户消息,

然后执行ActivityThread和ZygoteInit的main方法

<img src="data:image/png;base64,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" alt="">

而执行这一事件分发,需要MainThread、两个Binder和一个RenderThread,RenderThread负责分发硬件消息,由一个Binder发出,通过IPC机制传递给窗体层的Binder,窗体层Binder再调用MainThread执行上面一系列流程,实际上也就清楚了底层消息如何从硬件层到窗体层的。

剩下一个问题,空Activity的convertView到底有几个层级?

<img src="data:image/png;base64,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" alt="">

默认的Activity的convertView有三个层次,其实最低层次id为content,跟tableActivity类似。

消息先由DecorView处理,如果不处理,则分发到下面的ViewGroup和View;如果还没处理则上传给PhoneWindow,最后给Activity.

另外关于消息传递,通过InputDispatcherThread来执行,由InputReader读取,通过InputChannel,由InputDispatcher来传递,

最后调用ViewRoot的dispatchMotion和dispatchKey来传递给页面。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,580
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918