目录
- 一、WMS简介
- 二、窗口的分类
- 三、添加Window
一、WMS简介
Window:在Android视图体系中Window就是一个窗口的概念。Android中所有的视图都是依赖于Window显示的。
Window是一个抽象的概念,它对应屏幕上的一块显示区域,它不是实实在在的内容,实实在在的内容是View。Window直接管理View。
Window是View的一个容器,View是Window的具体表现。
每个Activity都对应有一个Window
应用程序窗口、PopupWindow、输入法窗口、Toast、Dialog、系统错误窗口等都是比较常见的Window
WindowManager:对Window的管理,包括新增、更新和删除等。
横竖屏切换、配置的变化都会导致Window的更新
Dialog的dismiss也是window的删除操作
WindowManagerService(WMS):窗口的最终管理者,它负责窗口的启动、添加和删除,另外窗口的大小和层级也是由WMS进行管理。
三者的关系:

二、窗口的分类
-
Application Window:Activity就是一个典型的应用程序窗口。
Type边界值范围:1~99 -
Sub Window:子窗口,顾名思义,它不能独立存在,需要附着在其他窗口才可以,PopupWindow就属于子窗口。
Type边界值范围:1000~1999跟父窗口共用一个token
-
System Window:输入法窗口、系统音量条窗口、系统错误窗口、顶部状态栏通知栏、Toast都属于系统窗口。
Type边界值范围:2000~2999
Type指越大,Z轴越大,窗口越靠前,
窗口的次序:
最上层的一定是系统窗口System Window,之后是子窗口Sub Window,最下面是应用程序窗口Application Window
不同类型的窗口的排列次序:

WindowManager关联类

这个地方采用
桥接模式
三、添加Window

Activity#attach()方法之内PhoneWindow被创建,并同时创建----WindowManagerImpl负责维护PhoneWindow内的内容。
在Activity#onCreate()中调用setContentVIew()方法,这个方法内部创建一个DecorView实例作为PhoneWindow的内容。
WindowManagerImpl决定管理DecorView,并创建一个ViewRootImpl实例,将ViewRootImpl与View树进行关联,这样ViewRootImpl就可以指挥View树的具体工作。



















