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。

审核编辑 :李倩

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

    关注

    5082

    文章

    19126

    浏览量

    305242
  • 应用程序
    +关注

    关注

    37

    文章

    3268

    浏览量

    57710
  • OpenHarmony
    +关注

    关注

    25

    文章

    3722

    浏览量

    16320

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

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

收藏 人收藏

    评论

    相关推荐

    2K0300先锋派Openharmony开发介绍

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

    控制台窗口主机是什么

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

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

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

    鸿蒙OpenHarmony南向/北向快速开发教程-迅为RK3568开发板

    优化开发流程-配置远程访问环境 P8_优化开发流程-编译源码和烧写镜像 P9_OpenHarmony源码目录介绍 P10_整体移植方案介绍 P11_编译目标分析 P12_编译框架基本概
    发表于 07-23 10:44

    鸿蒙OS开发:典型页面场景【一次开发,多端部署】实战(音乐专辑页2)

    本示例使用[一次开发多端部署]中介绍的自适应布局能力和响应式布局能力进行多设备(或多窗口尺寸)适配,保证应用在不同设备或不同窗口尺寸下可以正常显示。
    的头像 发表于 05-25 16:47 2113次阅读
    鸿蒙OS开发:典型页面场景【一次开发,多端部署】实战(音乐专辑页2)

    鸿蒙OS开发:【一次开发,多端部署】(音乐专辑主页)

    本示例使用一次开发多端部署中介绍的自适应布局能力和响应式布局能力进行多设备(或多窗口尺寸)适配,保证应用在不同设备或不同窗口尺寸下可以正常显示。
    的头像 发表于 05-21 14:48 748次阅读
    鸿蒙OS开发:【一次开发,多端部署】(音乐专辑主页)

    OpenHarmony 成功亮相国际学术会议 ASPLOS 2024

    举行的ASPLOS 2024上成功举办。本次学术教程会以“OpenHarmony操作系统的关键特性与能力”为主题,聚焦“基于OpenHarmony的前沿学术探索机遇与挑战“,详细介绍
    的头像 发表于 05-16 09:28 433次阅读
    <b class='flag-5'>OpenHarmony</b> 成功亮相国际学术会议 ASPLOS 2024

    OpenHarmony实战开发-管理系统窗口(仅Stage模型支持)

    连贯流畅。 在OpenHarmony中,应用窗口的动效为默认行为,不需要开发者进行设置或者修改。 相对于应用窗口,在显示系统窗口过程中,开发者可以自定义
    发表于 05-06 15:32

    OpenHarmony实战开发-如何实现窗口开发概述

    操作系统而言,窗口模块提供了不同应用界面的组织管理逻辑。 窗口模块的用途 在OpenHarmony中,窗口模块主要负责以下职责: 提供应用和系统界面的
    发表于 05-06 14:29

    【六】Purple Pi OH开发板带你7天入门OpenHarmony

    今天我们来从OpenHarmony简介、环境搭建、创建第一个OpenHarmony项目等方面开始OpenHarmony应用开发的第一步。一.OpenHarmony简介
    的头像 发表于 03-14 08:31 549次阅读
    【六】Purple Pi OH开发板带你7天入门<b class='flag-5'>OpenHarmony</b>!

    介绍一种OpenAtom OpenHarmony轻量系统适配方案

    本文在不改变原有系统基础框架的基础上, 介绍了一种OpenAtom OpenHarmony(以下简称“OpenHarmony”)轻量系统适配方案。
    的头像 发表于 03-05 09:24 1169次阅读
    <b class='flag-5'>介绍</b>一种OpenAtom <b class='flag-5'>OpenHarmony</b>轻量系统适配方案

    OpenHarmony4.0源码解析之媒体框架

    媒体框架简介 媒体框架 multimedia_player_framework 主要提供音视频的录制与播放功能。 框架简介 从框架图中可以看出,媒体
    的头像 发表于 02-26 22:05 944次阅读
    <b class='flag-5'>OpenHarmony</b>4.0源码解析之媒体<b class='flag-5'>框架</b>

    【鸿蒙】OpenHarmony 4.0蓝牙代码结构简析

    /master/api当前所有应用层接口统一归并到interface仓;api 10中蓝牙接口按照profile拆分了多个d.ts文件 框架层https://gitee.com/openharmony/communication_bluetooth该仓之前包含
    的头像 发表于 02-26 16:08 1570次阅读
    【鸿蒙】<b class='flag-5'>OpenHarmony</b> 4.0蓝牙代码结构简析

    OpenHarmony 之 NAPI 框架介绍

    环境中的 JS 变量与方法。 OpenHarmony 中的 NAPI OpenAtom OpenHarmony(以下简称 “OpenHarmony”)应用层基于 javascript 语言开发,而系统
    的头像 发表于 02-01 17:34 702次阅读
    <b class='flag-5'>OpenHarmony</b> 之 NAPI <b class='flag-5'>框架</b><b class='flag-5'>介绍</b>

    资讯速递 | 厦门大学OpenHarmony技术俱乐部正式揭牌成立

    个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。在OpenHarmony项目群技术指导委员会领导下,OpenHar
    的头像 发表于 01-02 16:51 515次阅读
    资讯速递 | 厦门大学<b class='flag-5'>OpenHarmony</b>技术俱乐部正式揭牌成立