WmS工作原理

概述

WmS是Android中图形用户接口的引擎,它管理这所有窗口。所谓的管理就是包括创建、删除窗口,以及将某个窗口设置为焦点窗口。

14.1.1 窗口的定义

窗口是一种通用的描述,指一个独立的界面,比如一个对话框窗口,一个Activity交互的窗口、一个菜单窗口等;Window是一个类,指的是具有通用操作方式的窗口;View也是一个类,通常翻译为视图,指一个独立的交互元素,比如一个按钮、一个文本框等。

在WmS中,窗口是由两部分内容构成的,一部分是描述该窗口的类WindowState,另一部分是该窗口在屏幕上对应的界面Surface。

Android采用的是层叠式布局,允许多个窗口层叠显示。该布局一般都需要一个窗口 管理服务器,从程序设计的角度来看,有两种设计模式可以实现服务端,一种是采用独立进程方式,另一种是采用共享库方式。

所谓独立进程方式是指,使用一个独立的进程专门用于屏幕的绘制和消息处理,所有的其他应用程序当需要创建窗口时,通过进程通信的方式请求管理服务创建窗口。

共享库方式是指,使用一段共享爱车需,该段程序中保存了所有客户端的窗口信息,共享库和每个客户端程序都运行于同一个进程之间。优点是窗口管理的开销比较小,因为它不需要进程间通信,缺点是任何一个客户端的不适当操作都可能导致窗口系统”崩溃“。

窗口切换时的动画策略:

在Android系统中,每个应用窗口可以同时指定是否使用桌面背景作为窗口背景,而在窗口动画的过程中却要保持桌面背景的静态性,这就又增加了动画逻辑的复杂度。在解决核心问题所使用的相关的变量列表,主要有以下五类变量:窗口管理相关、窗口动画相关、书出发窗口管理相关、墙纸窗口管理相关、焦点窗口管理相关。

在WmS的内部逻辑中,会进行三种常见的操作:

assign layer:为窗口分配层值,从用户的视角来看,层值越大,其窗口越靠近客户,窗口之间的层叠正是按照层值进行的。

perform layout:计算窗口的大小

place surface的语义是:调整SurFace对象的属性,并重新将其显示到屏幕上。

    原文作者:lonikitave
    原文地址: https://blog.csdn.net/qq_37385181/article/details/78158490
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞