在 Android 系统中,窗口(Window)按照功能和层级

在 Android 系统中,窗口(Window)按照功能和层级可分为以下几大类:

1. **应用窗口(Application Windows)**
   - 这是最常见的一类窗口,代表了应用程序的主要视图界面,例如 Activity 窗口。每当启动一个新 Activity 时,系统都会为其创建一个新的应用窗口。应用窗口的 Z-order(堆叠顺序)位于系统窗口之下,子窗口之上。

2. **子窗口(Sub-windows)**
   - 子窗口是依附于应用窗口之上的附加窗口,它们通常嵌入在 Activity 的布局中,或者暂时出现在 Activity 之上。例如,PopupWindow、Dialog、ContextMenu、OptionMenu 等都是子窗口的例子。子窗口的 Z-order 高于应用窗口,但低于系统窗口。

3. **系统窗口(System Windows)**
   - 系统窗口拥有最高的 Z-order,它们通常由系统服务创建和管理,可以覆盖在所有应用窗口之上。这类窗口包括但不限于:
     - 状态栏(StatusBar):显示时间、电池状态、通知等系统信息。
     - 导航栏(NavigationBar):包含 Home、Back 和 Recent Apps 等按键。
     - 输入法(Input Method):虚拟键盘弹出时显示。
     - Toast:短时显示的提示信息。
     - 通知栏(Notification shade):从顶部下拉显示的通知中心。
     - 快速设置面板(Quick Settings):进一步下拉显示的快捷设置选项。

窗口的层级关系决定了它们在屏幕上的显示顺序和相互覆盖关系,一般来说,层级越高(type 值越大)的窗口会显示在顶部,遮盖住层级较低的窗口。应用程序可以通过 WindowManager 的 API 来添加、移除和控制窗口的行为。

在 Android 中,当我们讨论窗口(Window)的类型(type)时,主要是指 WindowManager.LayoutParams 中的 `type` 属性。这个属性定义了窗口所属的类别,进而决定其在窗口堆栈中的层级、行为以及其他窗口对其的遮挡关系。

WindowManager.LayoutParams 中的 `type` 常见取值包括:

1. **应用窗口类型(Application Windows)**
   - `TYPE_APPLICATION`
   - `TYPE_APPLICATION_PANEL`(应用面板窗口,例如:popupWindow)
   - `TYPE_APPLICATION_MEDIA`(媒体播放窗口)
   - `TYPE_APPLICATION_SUB_PANEL`(子面板窗口)

2. **子窗口类型(Sub-windows)**
   - `TYPE_PHONE`(电话窗口,例如拨号盘)
   - `TYPE_TOAST`(Toast 窗口)
   - `TYPE_SYSTEM_ALERT`(系统警报窗口)
   - `TYPE_SYSTEM_DIALOG`(系统对话框窗口)

3. **系统窗口类型(System Windows)**
   - `TYPE_STATUS_BAR`(状态栏)
   - `TYPE_NAVIGATION_BAR`(导航栏)
   - `TYPE_SYSTEM_OVERLAY`(系统覆盖层,如一些悬浮窗效果)
   - `TYPE_INPUT_METHOD`(输入法窗口)

窗口类型 `type` 的值越小,窗口的层级就越低,越容易被其他窗口遮挡;反之,值越大,窗口的层级越高,更容易覆盖在其他窗口之上。此外,不同类型窗口还受到权限和安全策略的限制,例如普通应用一般不允许创建系统类型的窗口。

相关推荐

  1. Android 系统窗口Window按照功能层级

    2024-03-28 09:56:04       45 阅读
  2. Android系统界面上添加窗口

    2024-03-28 09:56:04       54 阅读
  3. 如何React划分边界构建层级

    2024-03-28 09:56:04       59 阅读
  4. Windows系统开启SSH服务

    2024-03-28 09:56:04       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 09:56:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 09:56:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 09:56:04       82 阅读
  4. Python语言-面向对象

    2024-03-28 09:56:04       91 阅读

热门阅读

  1. 视觉循迹小车(旭日x3派、摄像头、循迹)

    2024-03-28 09:56:04       44 阅读
  2. 2023.03.28

    2024-03-28 09:56:04       45 阅读
  3. 软考 - 软件架构设计师 - 架构风格

    2024-03-28 09:56:04       43 阅读
  4. 【React】React 组件 API

    2024-03-28 09:56:04       46 阅读
  5. 深入理解 React 中的 children props 和 render props

    2024-03-28 09:56:04       51 阅读
  6. 11 React 组件通信 父传子

    2024-03-28 09:56:04       40 阅读
  7. React系列之常用ReactHook

    2024-03-28 09:56:04       38 阅读
  8. MySQL 8.0 支持对单个数据库设置只读!

    2024-03-28 09:56:04       40 阅读
  9. MySQL数据库基础篇-SQL

    2024-03-28 09:56:04       42 阅读
  10. 影视接口支持资源站去插播,官解官替,切片

    2024-03-28 09:56:04       41 阅读
  11. log4js里numBackups设置存在无效的情况

    2024-03-28 09:56:04       41 阅读
  12. Linux常用命令详细讲解

    2024-03-28 09:56:04       37 阅读
  13. RabbitMQ相关总结

    2024-03-28 09:56:04       40 阅读
  14. linux动态库的加载

    2024-03-28 09:56:04       43 阅读
  15. linux命令ab测试你 Apache http 服务器的工具

    2024-03-28 09:56:04       37 阅读