网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
🦋1.2 窗口模块的用途
职责 | 描述 |
---|---|
提供窗口对象 | 窗口模块提供应用和系统界面的窗口对象,应用开发者可以使用窗口对象加载UI界面,实现界面的显示功能。窗口对象包含了窗口的属性、状态和行为等信息。 |
组织显示关系 | 窗口模块维护不同窗口间的叠加层次和位置属性,即窗口的Z轴高度。不同类型的窗口具有不同的默认位置和叠加层次。用户操作也可以在一定范围内对窗口的位置和叠加层次进行调整,以实现窗口的叠放效果。 |
提供窗口动效 | 窗口模块通常会为窗口的显示、隐藏和切换等操作添加动画效果,以增强交互的连贯性和流畅性。在HarmonyOS中,应用窗口的动效为默认行为,开发者无需额外设置或修改。 |
指导输入事件分发 | 根据当前窗口的状态或焦点,窗口模块负责分发输入事件。触摸和鼠标事件根据窗口的位置和尺寸进行分发,而键盘事件则会被分发给焦点窗口。开发者可以通过窗口模块提供的接口设置窗口是否可触摸和是否可获得焦点,以控制输入事件的分发。 |
通过窗口模块的上述职责,HarmonyOS能够提供强大的窗口管理功能,实现应用界面的显示、交互和动效。开发者可以使用窗口对象加载UI界面,定义窗口的显示关系和位置属性,以及控制窗口的触摸和焦点状态。这使得应用程序在同一块物理屏幕上能够提供多个应用界面的显示和交互机制,为终端用户提供了更丰富的控制应用界面的方式。整个操作系统也能够通过窗口模块进行不同应用界面的组织和管理逻辑,实现多任务的同时进行。
🦋1.3 基本概念
在 HarmonyOS 中,窗口模块将窗口界面分为系统窗口和应用窗口两种基本类型。系统窗口是完成系统特定功能的窗口,例如音量条、壁纸、通知栏、状态栏、导航栏等。这些窗口的设计旨在提供系统级别的功能和信息,以便用户可以方便地访问和管理。
与系统窗口相对应的是应用窗口,这些窗口与应用的显示相关。根据窗口内容的不同,应用窗口可以进一步分为应用主窗口和应用子窗口两种类型。
- 应用主窗口主要用于显示应用的界面,它是应用的核心窗口。当用户通过任务管理界面切换到应用时,应用主窗口将被显示出来,让用户可以直接与应用进行交互。
- 应用子窗口则是用于显示应用的弹窗、悬浮窗等辅助窗口。与应用主窗口不同的是,应用子窗口不会在任务管理界面显示。它们的生命周期与应用主窗口相同,即当应用主窗口销毁时,相关的应用子窗口也会被销毁。
通过这种窗口模块的划分和设计,HarmonyOS 可以更好地管理和控制窗口的显示和交互,为用户提供更加流畅和便捷的操作体验。无论是系统窗口还是应用窗口,它们都具有不同的功能和用途,相互配合,共同构建了丰富多样的窗口界面。
🦋1.4 实现原理
HarmonyOS窗口管理的实现原理主要依赖于以下几点:
- 基于面向对象的窗口管理:HarmonyOS使用面向对象的方式来管理窗口。每个窗口都是一个对象,具有自己的属性和方法。窗口管理器负责创建、销毁、调度和管理这些窗口对象。
- 窗口栈管理:HarmonyOS采用了窗口栈的方式来管理窗口。窗口栈是一个存储窗口对象的有序集合,栈的顶部是当前正在显示的窗口。当用户打开一个新的窗口时,它会被添加到栈的顶部,而当窗口被关闭时,它会从栈中移除。通过管理窗口栈,窗