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。

审核编辑 :李倩

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

    关注

    5161

    文章

    19786

    浏览量

    319723
  • 应用程序
    +关注

    关注

    38

    文章

    3339

    浏览量

    59223
  • OpenHarmony
    +关注

    关注

    30

    文章

    3865

    浏览量

    18975

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

    AI开发框架集成介绍

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

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

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

    大语言模型开发框架是什么

    大语言模型开发框架是指用于训练、推理和部署大型语言模型的软件工具和库。下面,AI部落小编为您介绍大语言模型开发框架
    的头像 发表于 12-06 10:28 ?597次阅读

    2K0300先锋派Openharmony开发介绍

    *附件:2K0300先锋派Openharmony开发介绍-241114.pdf
    发表于 11-17 21:36

    第三届OpenHarmony技术大会星光璀璨、致谢OpenHarmony社区贡献者

    取得丰硕成果的TSG团队、OpenHarmony技术俱乐部团队及个人,本次大会特别举办了星光团队和星光个人授牌仪式。共授牌4个星光TSG,分别是安全及机密计算TSG、跨平台应用开发框架TSG、编程语言
    的头像 发表于 10-21 14:10 ?619次阅读

    控制台窗口主机是什么

    控制台窗口主机(conhost),通常指的是在Windows操作系统中用于承载和控制控制台窗口(即命令行界面或CMD窗口)的进程。以下是对控制台窗口主机的
    的头像 发表于 10-08 18:12 ?6492次阅读

    基于ArkTS语言的OpenHarmony APP应用开发:多媒体管理2

    1、程序介绍本示例展示了视频组件的基本功能,以及如何控制播放状态的相关能力。包括视频组件化,全屏化,窗口化,上下轮播视频等。本实例使用Video组件,具体如下:进入首页点击播放按键。点击视频播放按钮
    的头像 发表于 09-21 08:06 ?1003次阅读
    基于ArkTS语言的<b class='flag-5'>OpenHarmony</b> APP应用开发:多媒体管理2

    基于ArkTS语言的OpenHarmony APP应用开发:窗口管理

    1、程序介绍 本示例展示了在应用主窗口中创建和拉起子窗口,以及窗口跳转等功能。 本案例已在OpenHarmony凌蒙派-RK3568开发板验
    发表于 09-18 15:29

    基于ArkTS语言的OpenHarmony APP应用开发:HelloOpenharmony

    1、程序简介该程序是基于OpenHarmony标准系统编写的UI应用类:HelloOpenHarmony。本案例是基于API9接口开发。本案例已在OpenHarmony凌蒙派-RK3568开发
    的头像 发表于 09-15 08:09 ?928次阅读
    基于ArkTS语言的<b class='flag-5'>OpenHarmony</b> APP应用开发:Hello<b class='flag-5'>Openharmony</b>

    基于ArkTS语言的OpenHarmony APP应用开发:简易计数器

    的变量值改变时ArkUI开发框架会调用 build() 方法进行页面的刷新。 2.4、Text控件 Text表示一个文本控件。 2.4.1、Text定义介绍 interface
    发表于 09-14 13:38

    【开源鸿蒙】使用QEMU运行OpenHarmony轻量系统

    本文将会介绍如何从源码安装QEMU 6.2.0,以及如何使用QEMU运行OpenHarmony轻量系统。通过本文,你将会对QEMU和OpenHarmony轻量系统又一个初步的认知,并对如何使用QEMU又一个初步的理解和体会。
    的头像 发表于 09-14 08:51 ?1500次阅读
    【开源鸿蒙】使用QEMU运行<b class='flag-5'>OpenHarmony</b>轻量系统