一、功能
窗口管理是ANDROID框架一个重要部分,主要包括如下功能:
(1)Z-ordered的维护
(2)窗口的创建、销毁
(3)窗口的绘制、布局
(4)Token管理,AppToken
(5)活动窗口管理(FocusWindow)
(6)活动应用管理(FocusAPP)
(7)输入法管理
(8)系统消息收集与分发
这些功能主要由一个窗口管理服务和相应的客户端来实现的,客户端通过BINDER机制与服务实现交互。
窗口管理服务端负责主要的窗口管理功能,由一个WindowManagerService服务及相关的类来组成。客户端则负责与窗口管理服务交互,并对应用和其它服务提供窗口管理接口,包括提供窗口视图的添加、移出和更新等接口函数,客户端的功能通过WindowManager接口及其实现WindowManagerImpl和相关类来完成,WindowManager提供的接口函数包括如下几个:
1、 public voidaddView(View view, ViewGroup.LayoutParams params);
用来在窗口实例对应的窗口上添加一个视图。
2、public void removeView(View view) ;
用来从窗口实例对应的窗口上移出一个视图。
3、public void updateViewLayout(View view,ViewGroup.LayoutParams params);
用来更新窗口上的视图的布局。
4、 public DisplaygetDefaultDisplay();
每个窗口管理实例需要绑定到特定的显示对象上,并在此显示对象上创建和显示新的窗口。
该函数返回一个窗口管理实例管理和使用的显示对象。
窗口为了能在另外的显示器上显示,需要先调用Context.createDisplayContext创建一个显示对象使用的独立的Context,然后使用该Context调用Context.getSystemService(Context.WINDOW_SERVICE)函数获得该显示对象对应的窗口管理实例。也可以直接创建一个Presentation对象,Presentation对象会自动创建显示对象需要的窗口管理实例和Context对象。