0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony多窗口框架介绍

OpenAtom OpenHarmony 来源:OpenAtom OpenHarmony 作者:OpenAtom OpenHarmony 2022-05-11 10:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

什么是窗口系统

窗口系统的作用,是提供一种机制,在同一块物理屏幕上使多个应用界面能够显示和交互。窗口作为应用的界面显示容器,各应用程序的开发者只需要实现被分配部分的显示区域内的交互界面即可,窗口系统会将这些交互界面组织成最终用户见到的形态。 对应用开发者而言,窗口系统提供了界面显示和交互能力的抽象;对用户而言,窗口系统提供了控制应用界面的方式;对整个操作系统而言,窗口系统提供了不同应用显示界面的组织管理逻辑。

为什么我们需要多窗口能力

对个人办公电脑这样的生产力设备而言,用户需要同时显示多个应用以提升办公效率,并且用户已经十分习惯了多个窗口层叠排布的组织形式,这也是主流桌面系统都在采用的窗口形式。

对移动终端而言,实际上大部分时候用户仍然在使用多窗口,比如在 OpenAtom OpenHarmony(以下简称“OpenHarmony”)中,状态栏、导航栏、壁纸也是独立窗口,当用户在桌面上时实际上已经存在 4 个窗口了。使用普通应用时的多窗口场景则包含分屏模式以及悬浮窗功能。对某些特定场景而言,多窗口功能也是十分重要的,例如车机在导航场景时,如果还需要进行其他任务,就需要进入分屏模式。

OpenHarmony多窗口框架介绍

对 OpenHarmony 来说,一个明显的挑战是 OpenHarmony 所面向的设备形态是不确定的,从几百兆内存的嵌入式设备,到个人办公设备,都有可能在 OpenHarmony 需要支持的设备范围之内,而这些设备对多窗口的诉求差距较大,因此 OpenHarmony 窗口框架的目标是提供构建这些设备图形界面所需要的能力,但又尽可能保持足够的灵活性,允许系统进行策略配置或者二次开发来达成各自不同的诉求。

OpenHarmony窗口框架职责介绍

在 OpenHarmony 中,窗口系统主要负责以下职责:

•提供应用和系统显示界面的窗口抽象:

为了将图形界面显示在屏幕上,应用和系统需要向窗口系统申请窗口对象,这通常代表了屏幕上一块矩形区域,具有位置、宽高和叠加层次(Z 轴)属性。同时,窗口对象也负责加载界面中 UI 框架的根节点,应用程序的 UI 界面就通过这个根节点在窗口中加载显示。

•组织不同窗口的显示关系,包括叠加层级和位置属性:

窗口系统维护不同窗口间的叠加层次。应用和系统的窗口具有多种类型,不同类型的窗口具有不同的叠加层次(Z 轴高度)。窗口系统负责给不同类型的窗口定义默认的层次范围,并根据用户操作更新窗口层次,即用户的操作也可以改变用户窗口的叠加层次。例如,通过点击或者触摸操作,用户可以将选中的窗口在用户界面的前台展示。

窗口系统维护不同窗口的位置属性。窗口系统负责给不同类型窗口定义默认的位置和大小,并根据应用层对于窗口位置和大小的偏好设定进行实际调整。不同的窗口类型有不同的默认位置和大小。例如,导航栏、音量条、壁纸等系统窗口均有各自固定的显示位置和窗口大小,而应用窗口的显示位置和显示大小则可以根据窗口显示模式和用户操作在一定范围内调整。

•设置窗口装饰:

在自由窗口等模式中,窗口系统会通知 ArkUI 在应用窗口外部增加窗口装饰。窗口装饰通常包含对窗口进行最大化、最小化及关闭按钮等界面元素,方便用户进行操作。

f0a4a342-cc74-11ec-bce3-dac502259ad0.jpg

•设置窗口动画:

在窗口显示、隐藏、和窗口间切换时,通常会有一组动画效果使得整个交互过程更加连贯流畅。窗口系统负责设置窗口的动画参数,完成动画效果。

•指导输入事件分发:

输入事件通常可以分为指向性输入(如触摸事件、鼠标事件)和非指向性输入(如按键)。指向性输入事件通常与显示屏的某个坐标关联,事件分发时需要根据当前窗口系统的状态,将事件分发给在这个位置显示的窗口;非指向性输入事件则通常与当前的焦点窗口关联,事件分发时需要根据当前的焦点窗口,将事件分发给当前的窗口。

f0cc5c52-cc74-11ec-bce3-dac502259ad0.jpg

•组织窗口内容的显示:

各应用输出的显示内容,最终会被组合成一张显示画面输出给物理屏幕,而窗口系统负责向 RenderServer 提供每个显示内容的位置、大小、层级,使得每个界面被正确组合。

f0e5f1b2-cc74-11ec-bce3-dac502259ad0.jpg

OpenHarmony窗口类型定义

OpenHarmony 的窗口分为系统窗口和应用窗口两个类别,而应用窗口又分为应用主窗口和应用子窗口两种类型。

系统窗口

系统窗口指完成系统特定功能的窗口类型。通常来说,系统窗口不允许三方应用创建,也不是由界面 Ability 默认创建,而是由系统应用手动添加的。

系统窗口可以被系统应用直接添加、移除、改变大小,系统应用的直接操作给予系统应用足够的灵活度应对不同产品和 UI 设计的变更。

应用主窗口

应用主窗口是由界面 Ability 默认为应用创建、加载的,用于显示应用界面的窗口类型。应用主窗口会在任务管理界面中被显示。

应用辅助窗口

应用辅助窗口是基于应用手动创建的,用于显示应用的弹窗、悬浮窗口等内容的窗口。应用辅助窗口不会在任务管理界面中被显示。在应用获取权限后,允许应用辅助窗口在应用主窗口不再显示后继续在前台悬浮显示

OpenHarmony应用窗口模式

应用窗口模式指的是应用主窗口的显示方式,这也是大部分用户所理解的“多窗口能力”。OpenHarmony 3.1 Release 中,支持以下三种应用窗口模式:全屏、分屏、自由窗口

全屏模式

全屏窗口是手持设备和嵌入设备中最常用的窗口模式,OpenHarmony 中的全屏模式具有以下特征:

1. 全屏窗口默认情况下铺满状态栏导航栏之外的整个屏幕区域(见沉浸式章节)

2.同一时间内,每个屏幕上仅存在一个活动状态的全屏窗口,新的全屏窗口被启动,旧的全屏窗口默认被切换到后台(而不是被遮挡)

f116fdde-cc74-11ec-bce3-dac502259ad0.jpg

分屏模式

分屏模式主要在平板和个人电脑中使用,OpenHarmony 中的分屏模式具有以下特征:

1. 分屏窗口默认占据屏幕的某个部分,OpenHarmony 3.1 Release 中,支持二分屏能力;

2. 两个应用分屏窗口具有分界线,用户可以通过拖拽分界线同时调整两个部分的窗口尺寸。

f12c4eb4-cc74-11ec-bce3-dac502259ad0.jpg

自由窗口模式

自由窗口是个人办公设备的标志性多窗口形态,OpenHarmony 中的自由窗口模式具有以下特征:

1. 自由窗口的大小和位置可自由改变;

2. 同一个屏幕上可以同时显示多个自由窗口,它们按照打开顺序或者获取焦点的顺序在 Z 轴排布;

3. 自由窗口被点击或触摸将导致自由窗口的 Z 轴高度提升,并获取焦点。

f1410174-cc74-11ec-bce3-dac502259ad0.jpg

OpenHarmony沉浸式能力

沉浸式能力,指的是对状态栏、导航栏等系统窗口进行控制,从而使用户获得最佳设备使用体验的能力。状态栏和导航栏是独立的窗口,它们由特定的系统应用(通常是 System UI)进行添加,状态栏和导航栏所承载的内容和功能不在窗口系统中展开,这里仅表述该窗口与应用的窗口相关的行为。

在默认情况下,全屏应用和分屏应用使用的屏幕区域为除去状态栏导航栏外的可用区域。为了让应用能尽量使用屏幕的显示区域,应用可以通过沉浸式接口将状态栏导航栏隐藏,即占据全屏大小的应用的窗口大小与屏幕大小一致,分屏的应用的窗口大小则按比例分割屏幕大小。这在进行全屏播放视频等场景时是非常常用的。

除了隐藏状态栏、导航栏外,还可以将应用的布局设置到状态栏导航栏的下方,这样应用就可以作为半透明状态栏导航栏的背景存在,使用户获得更好的体验。

应用也可以独立设置(https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-window.md#setsystembarproperties)状态栏导航栏的文字颜色和背景颜色,这样就可以使得应用显示时系统整体的界面风格统一。

以上是对OpenHarmony窗口管理框架的简单介绍。OpenHarmony 窗口管理框架和多窗口能力还在不断持续的开发演进中。对 OpenHarmony 窗口框架感兴趣的小伙伴,可以从以下链接获取窗口管理代码进行深入了解:https://gitee.com/openharmony/windowmanager。也希望更多开发者一起加入进来,与OpenHarmony共同成长。

有兴趣进行 OpenHarmony 应用开发的小伙伴,也可以通过以下链接了解 OpenHarmony 的窗口管理相关接口:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-window.md。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20146

    浏览量

    328811
  • 应用程序
    +关注

    关注

    38

    文章

    3342

    浏览量

    59925
  • OpenHarmony
    +关注

    关注

    31

    文章

    3926

    浏览量

    20719

原文标题:OpenHarmony 3.1 Release版本关键特性解析——构建OpenHarmony窗口框架

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    大语言模型如何处理上下文窗口中的输入

    本博客介绍了五个基本概念,阐述了大语言模型如何处理上下文窗口中的输入。通过明确的例子和实践中获得的见解,本文介绍了多个与上下文窗口有关的基本概念,如词元化、序列长度和注意力等。
    的头像 发表于 12-03 13:48 185次阅读
    大语言模型如何处理上下文<b class='flag-5'>窗口</b>中的输入

    中科芯CKS32F107XX系列MCU的窗口看门狗介绍

    中科芯CKS32F107xx系列产品内部提供两个看门狗定时器单元,独立型看门狗IWDG(Independent Watchdog)和窗口型看门狗WWDG(Window Watchdog),本文主要介绍WWDG的应用,关于IWDG的详情,请参看我们的IWDG微课堂内容。
    的头像 发表于 11-28 14:48 3598次阅读
    中科芯CKS32F107XX系列MCU的<b class='flag-5'>窗口</b>看门狗<b class='flag-5'>介绍</b>

    OpenHarmony2025年度竞赛训练营重磅开启

      OpenHarmony2025年度竞赛训练营       活动介绍 OpenHarmony竞赛训练营 旨在引导高校学生进行OpenHarmony产学研用,培养更多应用型人才和产业需
    的头像 发表于 07-16 11:51 715次阅读

    技术干货 | AD/DA动态分析中的信号窗口处理技术

    前一章详解了TX7006上的线性计算,AD/DA动态分析中的傅里叶变换和动态参数计算。本期文章将为大家继续介绍AD/DA动态分析中的信号窗口
    的头像 发表于 07-03 13:39 925次阅读
    技术干货 | AD/DA动态分析中的信号<b class='flag-5'>窗口</b>处理技术

    第三届大会回顾第3期 | FFRT并发框架OpenHarmony中的设计与实践

    演讲嘉宾 | 黄佑钟 回顾整理 | 廖   涛 排版校对 | 宋夕明 嘉宾介绍 开发框架分论坛  黄佑钟 ,海思Kirin解决方案并行与异构计算专家。 正文内容 多任务并发能更有效地利用CPU资源
    的头像 发表于 06-21 16:53 963次阅读
    第三届大会回顾第3期 | FFRT并发<b class='flag-5'>框架</b>在<b class='flag-5'>OpenHarmony</b>中的设计与实践

    开源鸿蒙开发必备!OpenHarmony替换Full SDK全攻略

    本文介绍开源鸿蒙OpenHarmony替换FullSDK的方法,演示设备为触觉智能PurplePiOH鸿蒙开发板获取FullSD
    的头像 发表于 06-06 18:11 643次阅读
    开源鸿蒙开发必备!<b class='flag-5'>OpenHarmony</b>替换Full SDK全攻略

    鸿蒙5开发宝藏案例分享---一多窗口适配开发实践

    **?**大家好呀!今天要跟各位鸿蒙开发者分享一个超实用的大宝藏——HarmonyOS官方那些藏在文档里的多窗口适配案例!是不是经常在开发时发现文档里明明有解决方案,但就是找不到具体代码参考?我也是
    发表于 06-03 15:53

    贡献 OpenHarmony 库关键配置

    # 贡献 OpenHarmony 库关键配置 #自研框架#ArkUI-X#三方框架#OpenHarmony#HarmonyOS ## 创建第三方库 - 打开 DevEco Stud
    发表于 05-28 13:46

    KaihongOS操作系统FA模型与Stage模型介绍

    应用组件共享同一个ArkTS引擎实例,这样可以在应用组件之间方便地共享对象和状态,同时减少复杂应用运行对内存的占用。 Stage模型的设计出发点包括为复杂应用而设计、支持多设备和多窗口形态、平衡
    发表于 04-24 07:27

    诚迈信创电脑多屏显示功能助力提高办公效率

    您是否也深陷这样的日常工作状态:每天在对话框、文档、网页等十几个窗口之间来回跳转,频繁的切屏导致注意力容易分散。在数字化办公场景中,这种「窗口焦虑」正在悄然成为当代职场人的效率杀手,多窗口操作也成为了团队效能提升的隐形瓶颈。
    的头像 发表于 04-07 11:48 867次阅读

    北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构

    北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构
    的头像 发表于 03-11 14:13 1558次阅读
    北京迅为RK3568开发板<b class='flag-5'>OpenHarmony</b>系统南向驱动开发内核HDF驱动<b class='flag-5'>框架</b>架构

    迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序

    接下来编译 LED 驱动,该驱动用于在基于华为设备框架(HDF)的系统中控制 LED 灯的开关,完整代码如下所示: 更多内容可以关注:迅为RK3568开发板篇OpenHarmony
    发表于 01-17 15:13

    AI开发框架集成介绍

    随着AI应用的广泛深入,单一框架往往难以满足多样化的需求,因此,AI开发框架的集成成为了提升开发效率、促进技术创新的关键路径。以下,是对AI开发框架集成的介绍,由AI部落小编整理。
    的头像 发表于 01-07 15:58 929次阅读

    鸿蒙原生页面高性能解决方案上线OpenHarmony社区 助力打造高性能原生应用

    Nodepool、HMrouter和DataCache 三大解决方案,并上架OpenHarmony开源社区分,分别针对应用页面滑动、跳转、首页冷启动等关键性能场景提供高效易用的工具,助力伙伴和开发者打造
    发表于 01-02 18:00

    OpenHarmony程序分析框架论文入选ICSE 2025

      近日,ICSE 2025软件工程实践Track放榜,面向OpenAtom OpenHarmony(以下简称“OpenHarmony”)的ArkTS程序分析基础框架--方舟程序分析器(论文题目为
    的头像 发表于 01-02 13:41 1833次阅读
    <b class='flag-5'>OpenHarmony</b>程序分析<b class='flag-5'>框架</b>论文入选ICSE 2025