Android GUI系统-View框架(一)

View框架

相关元素的关系:

1ViewViewRootViewRoot可以理解为View树的管理者,是ViewRootImpl类型的对象,ActivityViewRoot是一对一的关系,他有一个成员变量mView,是View树的根,也就是xml布局的顶层元素,ViewRoot的核心任务是跟WMS通信。


2ActivityWindowActivity有一个成员变量mWindow就是Window类型的对象,Window基类,手机系统中默认是指phoneWindow,这个phoneWindow对象是什么时候生成的?在启动Activity的过程中,最后一步会调用performLaunchActivity,在这个函数里通过activity.attach的调用生成了mWindow= new PhoneWindow(this, window)


3WindowWindowManagerImplWindow是面向Activity的,是UI界面的外框,框里面的具体内容由Window的具体类(如phoneWindow)规划。

Window需要跟WMS通信,一个应用程序里面可能有多个Window,这些window需要统一的管理,所以有了WindowManager,也就是Window的成员变量mWindowManagerWindowManager是一个接口,具体的实现类是WindowManagerImplWindowManagerImpl可以认为是整个应用程序中所有窗口的管理者。


4ViewRootWindowManagerImplWindowManagerImpl中有一个成员变量mGlobal,是WindowManagerGlobal类型的变量,它通过三个列表mViewsmRootsmParams来管理View树的根节点,ViewRootWindow属性。


5ViewRootWindowManagerServiceViewRoot中有一个mWindowSession成员变量,是用于跟WMS通信的,因为它是匿名的Binderserver,所以要通过WMS的接口openSession获得,同时ViewRoot利用mWindowSessionaddToDisplay提供一个IWindow类型的Binder对象给WMS,让WMS可以通过这个Binder对象跟ViewRoot通信。


6)

跟窗口相关的两个概念,phoneWindow继承自Window类,是应用进程端对窗口的描述,表达了对窗口的一种约束;WMS中的window是一个抽象的概念,用WindowState来描述其状态,WindowState可以认为是WMS中对窗口的描述。


借用一张网上的图:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值