- Window是一个抽象类,Android所以的视图都是附加在Window上的,Window实际是View的直接管理者,它的具体实现是PhoneWindow,Window的具体实现位于WindowManagerService;
- 每一个Window都对应着一个View和一个ViewRootImpl,Window是以View的形式存在的,Window和View之间通过ViewRootImpl建立联系;
- WindowManager是外界访问Window的入口,WindowManager和WindowManagerService的交互是一个IPC过程;
- WindowManager常用的功能有三个:
addView(view,mLayoutParams);
updateViewLayout(view,mLayoutParams);
removeView(view);
mLayoutparams的几个常用属性:
a.flag:FLAG_NOT_FOCUSABLE,表示Window不需要获取焦点,也不需要接收各种输入事件,最终事件会传递给下层的具有焦点的Window。FLAG_NOT_TOUCH_MODAL,系统会将当前Window区域以外的单击事件传递给底层Window,当前Window区域以内的单击事件则自己处理。FLAG_SHOW_WHEN_LOCKED,可以让Window显示在锁屏界面上。
b.type:表示Window的类型,应用Window层级范围1-99,子Window层级范围1000-1999,系统Window层级范围2000-2999,层级大的会覆盖在层级小的Window上面。系统Window常用的有TYPE_SYSTEM_OVERLAY或者TYPE_SYSTEM_ERROR,需要声明SYSTEM_ALERT_WINDOW权限。
c.x、y:Window的显示位置坐标,可以通过改变x、y属性值实现Window的拖动。
Window和WindowManager
最新推荐文章于 2023-05-28 14:18:35 发布