这张图大致解释了各模块之间的关系:
Android视图层主要工作原理图.png
下文内容并没有具体的分析逻辑,主要是解释上图中各模块的职责,算是对Android视图层各模块的一个小总结,方便对于整个AndroidUI显示原理的理解。
Window相关
Window可以说是Android Framework层提供的一个最基础的UI组件管理类,PhoneWindow是它的唯一实现类。它屏蔽了开发者与WindowManagerService的交互,统一了UI设计,并统一接收用户交互事件,比如背景、title和按键事件等。
Activity/Dialog/Toast的UI展现都是依赖于Window来完成。对于UI编写,开发者只需要使用View相关即可。View最终会以ContentView的形式设置给Window:PhoneWindow.javapublic void setContentView(int layoutResID) {
}
DecorView是PhoneWindow的根ViewGroup。Window提供了一些列的配置项,不同的配置项DecorView的UI组成会有一定的不同。关于Window的具体组成可以参考前面深入剖析Window组成一文。
WindowManager
一个Window会有一个WindowManager。提到WindowManager就要提到WindowManagerGlobal。他们之间的区别是:WindowManager : 它负责管理一个Window,并提供一