WMS
文章平均质量分 89
起司锅仔
这个作者很懒,什么都没留下…
展开
-
WindowManagerService 窗口动画(7)
WMS中有会有操作窗口动画的过程,这个动画的原理本质和app是一样的,就是每一个VSync不断更新窗口的属性(位置,大小,透明度等等)。我们基于窗口显示的动画,来研究一下这个流程,主要分两个流程,一个是窗口设置以及触发的点,另一个是动画的实现原理。原创 2024-08-05 22:41:18 · 941 阅读 · 0 评论 -
WindowManagerService 核心函数relayout(6)
WMS中最重要的一个方法就是这个relayout,当窗口的树结构、大小等发生变化,就会通过这个方法重新计算所有窗口的位置,大小等属性。其中还包括对Insets的计算等等。这个方法触发的路径很多,app UI变化binder调用触发,窗口动画触发,WMS窗口的一些属性变化,Insets变化等等都会调用这个方法来重新对所有的窗口进行计算。原创 2024-08-05 22:39:10 · 1266 阅读 · 0 评论 -
WindowManagerService Inset(5)
窗口中有一个Inset的概念,比较常见的主要是状态栏,导航栏,输入法。我们先来说说Inset的作用,前面我们已经了解了WMS树是怎么管理窗口信息的,我们平时在使用app时,点击输入框后弹出输入法,输入法窗口可以把我们app窗口往上抬,前面我们知道输入法窗口所在的节点是13,14层,而app窗口所在节点是第2层,并不是父子关系或者直接的兄弟节点。这种关联如果仅仅靠之前树的结构不太好实现,Inset就是用来实现处理这种场景的。原创 2024-08-05 22:35:48 · 997 阅读 · 0 评论 -
WindowManagerService添加窗口流程(4)
添加窗口流程是WMS很重要的一个功能,如果你是一个app开发,基本上接触WMS最多的场景也就是这个流程,在添加悬浮窗的时候使用的addView就是这个流程,其实activity也是通过类似的流程去添加显示的窗口的,我们会通过介绍addView这个流程了解添加窗口这个过程。和之前介绍SurfaceFlinger一样,在继续了解WMS之前,我们先来介绍一下app和WMS的binder通信架构,以便我们后面更好的了解WMS的其他流程。原创 2024-08-05 22:31:10 · 1070 阅读 · 0 评论 -
WindowManagerService 核心数据结构(2)
在开始看代码之前,我们先来了解一下WMS的核心数据结构,后续WMS很多的操作都是基于这些数据结构的,了解完这些类之后可以更加便于我们看具体流程代码。WMS用一个树结构来记录所有的窗口,其中里面有许多不同类型的节点,用来代表不同的业务。原创 2024-08-05 22:24:16 · 680 阅读 · 0 评论 -
WindowManagerService简述(1)
Android的系统服务都是运行在SystemServer里的,和GUI直接相关的主要是ActivityManagerService(后面就简称AMS)和WindowManagerService(后面就简称WMS),我们先来研究WMS,了解WMS后对学习AMS会有比较大的帮助,而且我们之前才看完SurfaceFlinger,WMS和SurfaceFlinger的关系比较紧密。 看完之前SurfaceFlinger章节后我们知道,SurfaceFlinger就是对一些layer上的内容进行合成,形成最终上原创 2024-08-05 22:22:03 · 281 阅读 · 0 评论