DisplayArea

240 阅读2分钟

DisplayArea详细介绍

DisplayArea在Android系统中是一个与屏幕显示区域紧密相关的概念。以下是关于DisplayArea的详细解释:

  1. 定义与概念

    1. DisplayArea代表了屏幕的显示区域,这个区域是从Z值(即层叠顺序)上来看的。在Android的窗口系统中,不同的layer层可以创建不同的DisplayArea。
    2. 如果一个DisplayArea有子元素,那么代表该DisplayArea从Z轴上还是可分的,即可以包含更多层次的窗口或界面元素。
  2. 继承关系

    1. DisplayArea树的所有节点都继承于DisplayArea,而DisplayArea继承于WindowContainer,因此每一个节点都是一个container(容器)。
    2. 这意味着DisplayArea不仅代表了一个显示区域,还具备了容器的特性,可以包含其他窗口或显示元素。
  3. 层次结构

    1. DisplayContent代表了一块屏幕,它是DisplayArea的一个父类。DisplayContent继承于DisplayArea,说明其也是一块显示区域,并且可以在不同的layer层显示。
    2. DisplayContent的layer总共有36层(窗口类型有36个),因此最多可以有36个DisplayArea。由于层与层之间的z值差距很大,每一层上又可以放很多DisplayArea。
  4. 创建与初始化

    1. 在DisplayContent的构造方法中,会调用DisplayAreaPolicy.Provider.instantiate方法去初始化一个DisplayArea层级结构。
    2. DisplayArea的创建时机与具体Feature的添加规则相关。首先根据window type的feature规则创建对应的feature层次关系,然后基于这些规则创建pendingArea(待处理的区域),最后从root节点开始遍历所有子节点创建DisplayArea。
  5. 功能与应用

    1. DisplayArea在Android系统中主要用于管理窗口的显示区域和层次关系,确保窗口能够按照正确的顺序和位置显示在屏幕上。
    2. 通过精细控制DisplayArea的层级结构和属性,可以实现多任务、分屏、窗口动画等高级功能。
  6. 总结

    1. DisplayArea是Android窗口管理系统中的一个重要概念,它代表了屏幕的显示区域,并具备容器的特性。通过精细控制DisplayArea的层级结构和属性,可以实现复杂的窗口管理功能。对于应用开发者来说,通常不需要直接操作DisplayArea,而是通过更高级别的API(如Activity、View等)与窗口系统交互。