0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenHarmony多窗口框架介紹

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-05-11 10:19 ? 次閱讀

什么是窗口系統(tǒng)

窗口系統(tǒng)的作用,是提供一種機制,在同一塊物理屏幕上使多個應(yīng)用界面能夠顯示和交互。窗口作為應(yīng)用的界面顯示容器,各應(yīng)用程序的開發(fā)者只需要實現(xiàn)被分配部分的顯示區(qū)域內(nèi)的交互界面即可,窗口系統(tǒng)會將這些交互界面組織成最終用戶見到的形態(tài)。 對應(yīng)用開發(fā)者而言,窗口系統(tǒng)提供了界面顯示和交互能力的抽象;對用戶而言,窗口系統(tǒng)提供了控制應(yīng)用界面的方式;對整個操作系統(tǒng)而言,窗口系統(tǒng)提供了不同應(yīng)用顯示界面的組織管理邏輯。

為什么我們需要多窗口能力

對個人辦公電腦這樣的生產(chǎn)力設(shè)備而言,用戶需要同時顯示多個應(yīng)用以提升辦公效率,并且用戶已經(jīng)十分習(xí)慣了多個窗口層疊排布的組織形式,這也是主流桌面系統(tǒng)都在采用的窗口形式。

對移動終端而言,實際上大部分時候用戶仍然在使用多窗口,比如在 OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)中,狀態(tài)欄、導(dǎo)航欄、壁紙也是獨立窗口,當(dāng)用戶在桌面上時實際上已經(jīng)存在 4 個窗口了。使用普通應(yīng)用時的多窗口場景則包含分屏模式以及懸浮窗功能。對某些特定場景而言,多窗口功能也是十分重要的,例如車機在導(dǎo)航場景時,如果還需要進行其他任務(wù),就需要進入分屏模式。

OpenHarmony多窗口框架介紹

對 OpenHarmony 來說,一個明顯的挑戰(zhàn)是 OpenHarmony 所面向的設(shè)備形態(tài)是不確定的,從幾百兆內(nèi)存的嵌入式設(shè)備,到個人辦公設(shè)備,都有可能在 OpenHarmony 需要支持的設(shè)備范圍之內(nèi),而這些設(shè)備對多窗口的訴求差距較大,因此 OpenHarmony 窗口框架的目標(biāo)是提供構(gòu)建這些設(shè)備圖形界面所需要的能力,但又盡可能保持足夠的靈活性,允許系統(tǒng)進行策略配置或者二次開發(fā)來達成各自不同的訴求。

OpenHarmony窗口框架職責(zé)介紹

在 OpenHarmony 中,窗口系統(tǒng)主要負責(zé)以下職責(zé):

?提供應(yīng)用和系統(tǒng)顯示界面的窗口抽象:

為了將圖形界面顯示在屏幕上,應(yīng)用和系統(tǒng)需要向窗口系統(tǒng)申請窗口對象,這通常代表了屏幕上一塊矩形區(qū)域,具有位置、寬高和疊加層次(Z 軸)屬性。同時,窗口對象也負責(zé)加載界面中 UI 框架的根節(jié)點,應(yīng)用程序的 UI 界面就通過這個根節(jié)點在窗口中加載顯示。

?組織不同窗口的顯示關(guān)系,包括疊加層級和位置屬性:

窗口系統(tǒng)維護不同窗口間的疊加層次。應(yīng)用和系統(tǒng)的窗口具有多種類型,不同類型的窗口具有不同的疊加層次(Z 軸高度)。窗口系統(tǒng)負責(zé)給不同類型的窗口定義默認的層次范圍,并根據(jù)用戶操作更新窗口層次,即用戶的操作也可以改變用戶窗口的疊加層次。例如,通過點擊或者觸摸操作,用戶可以將選中的窗口在用戶界面的前臺展示。

窗口系統(tǒng)維護不同窗口的位置屬性。窗口系統(tǒng)負責(zé)給不同類型窗口定義默認的位置和大小,并根據(jù)應(yīng)用層對于窗口位置和大小的偏好設(shè)定進行實際調(diào)整。不同的窗口類型有不同的默認位置和大小。例如,導(dǎo)航欄、音量條、壁紙等系統(tǒng)窗口均有各自固定的顯示位置和窗口大小,而應(yīng)用窗口的顯示位置和顯示大小則可以根據(jù)窗口顯示模式和用戶操作在一定范圍內(nèi)調(diào)整。

?設(shè)置窗口裝飾:

在自由窗口等模式中,窗口系統(tǒng)會通知 ArkUI 在應(yīng)用窗口外部增加窗口裝飾。窗口裝飾通常包含對窗口進行最大化、最小化及關(guān)閉按鈕等界面元素,方便用戶進行操作。

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

?設(shè)置窗口動畫:

在窗口顯示、隱藏、和窗口間切換時,通常會有一組動畫效果使得整個交互過程更加連貫流暢。窗口系統(tǒng)負責(zé)設(shè)置窗口的動畫參數(shù),完成動畫效果。

?指導(dǎo)輸入事件分發(fā):

輸入事件通??梢苑譃橹赶蛐暂斎耄ㄈ缬|摸事件、鼠標(biāo)事件)和非指向性輸入(如按鍵)。指向性輸入事件通常與顯示屏的某個坐標(biāo)關(guān)聯(lián),事件分發(fā)時需要根據(jù)當(dāng)前窗口系統(tǒng)的狀態(tài),將事件分發(fā)給在這個位置顯示的窗口;非指向性輸入事件則通常與當(dāng)前的焦點窗口關(guān)聯(lián),事件分發(fā)時需要根據(jù)當(dāng)前的焦點窗口,將事件分發(fā)給當(dāng)前的窗口。

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

?組織窗口內(nèi)容的顯示:

各應(yīng)用輸出的顯示內(nèi)容,最終會被組合成一張顯示畫面輸出給物理屏幕,而窗口系統(tǒng)負責(zé)向 RenderServer 提供每個顯示內(nèi)容的位置、大小、層級,使得每個界面被正確組合。

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

OpenHarmony窗口類型定義

OpenHarmony 的窗口分為系統(tǒng)窗口和應(yīng)用窗口兩個類別,而應(yīng)用窗口又分為應(yīng)用主窗口和應(yīng)用子窗口兩種類型。

系統(tǒng)窗口

系統(tǒng)窗口指完成系統(tǒng)特定功能的窗口類型。通常來說,系統(tǒng)窗口不允許三方應(yīng)用創(chuàng)建,也不是由界面 Ability 默認創(chuàng)建,而是由系統(tǒng)應(yīng)用手動添加的。

系統(tǒng)窗口可以被系統(tǒng)應(yīng)用直接添加、移除、改變大小,系統(tǒng)應(yīng)用的直接操作給予系統(tǒng)應(yīng)用足夠的靈活度應(yīng)對不同產(chǎn)品和 UI 設(shè)計的變更。

應(yīng)用主窗口

應(yīng)用主窗口是由界面 Ability 默認為應(yīng)用創(chuàng)建、加載的,用于顯示應(yīng)用界面的窗口類型。應(yīng)用主窗口會在任務(wù)管理界面中被顯示。

應(yīng)用輔助窗口

應(yīng)用輔助窗口是基于應(yīng)用手動創(chuàng)建的,用于顯示應(yīng)用的彈窗、懸浮窗口等內(nèi)容的窗口。應(yīng)用輔助窗口不會在任務(wù)管理界面中被顯示。在應(yīng)用獲取權(quán)限后,允許應(yīng)用輔助窗口在應(yīng)用主窗口不再顯示后繼續(xù)在前臺懸浮顯示

OpenHarmony應(yīng)用窗口模式

應(yīng)用窗口模式指的是應(yīng)用主窗口的顯示方式,這也是大部分用戶所理解的“多窗口能力”。OpenHarmony 3.1 Release 中,支持以下三種應(yīng)用窗口模式:全屏、分屏、自由窗口

全屏模式

全屏窗口是手持設(shè)備和嵌入設(shè)備中最常用的窗口模式,OpenHarmony 中的全屏模式具有以下特征:

1. 全屏窗口默認情況下鋪滿狀態(tài)欄導(dǎo)航欄之外的整個屏幕區(qū)域(見沉浸式章節(jié))

2.同一時間內(nèi),每個屏幕上僅存在一個活動狀態(tài)的全屏窗口,新的全屏窗口被啟動,舊的全屏窗口默認被切換到后臺(而不是被遮擋)

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

分屏模式

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

1. 分屏窗口默認占據(jù)屏幕的某個部分,OpenHarmony 3.1 Release 中,支持二分屏能力;

2. 兩個應(yīng)用分屏窗口具有分界線,用戶可以通過拖拽分界線同時調(diào)整兩個部分的窗口尺寸。

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

自由窗口模式

自由窗口是個人辦公設(shè)備的標(biāo)志性多窗口形態(tài),OpenHarmony 中的自由窗口模式具有以下特征:

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

2. 同一個屏幕上可以同時顯示多個自由窗口,它們按照打開順序或者獲取焦點的順序在 Z 軸排布;

3. 自由窗口被點擊或觸摸將導(dǎo)致自由窗口的 Z 軸高度提升,并獲取焦點。

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

OpenHarmony沉浸式能力

沉浸式能力,指的是對狀態(tài)欄、導(dǎo)航欄等系統(tǒng)窗口進行控制,從而使用戶獲得最佳設(shè)備使用體驗的能力。狀態(tài)欄和導(dǎo)航欄是獨立的窗口,它們由特定的系統(tǒng)應(yīng)用(通常是 System UI)進行添加,狀態(tài)欄和導(dǎo)航欄所承載的內(nèi)容和功能不在窗口系統(tǒng)中展開,這里僅表述該窗口與應(yīng)用的窗口相關(guān)的行為。

在默認情況下,全屏應(yīng)用和分屏應(yīng)用使用的屏幕區(qū)域為除去狀態(tài)欄導(dǎo)航欄外的可用區(qū)域。為了讓應(yīng)用能盡量使用屏幕的顯示區(qū)域,應(yīng)用可以通過沉浸式接口將狀態(tài)欄導(dǎo)航欄隱藏,即占據(jù)全屏大小的應(yīng)用的窗口大小與屏幕大小一致,分屏的應(yīng)用的窗口大小則按比例分割屏幕大小。這在進行全屏播放視頻等場景時是非常常用的。

除了隱藏狀態(tài)欄、導(dǎo)航欄外,還可以將應(yīng)用的布局設(shè)置到狀態(tài)欄導(dǎo)航欄的下方,這樣應(yīng)用就可以作為半透明狀態(tài)欄導(dǎo)航欄的背景存在,使用戶獲得更好的體驗。

應(yīng)用也可以獨立設(shè)置(https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-window.md#setsystembarproperties)狀態(tài)欄導(dǎo)航欄的文字顏色和背景顏色,這樣就可以使得應(yīng)用顯示時系統(tǒng)整體的界面風(fēng)格統(tǒng)一。

以上是對OpenHarmony窗口管理框架的簡單介紹。OpenHarmony 窗口管理框架和多窗口能力還在不斷持續(xù)的開發(fā)演進中。對 OpenHarmony 窗口框架感興趣的小伙伴,可以從以下鏈接獲取窗口管理代碼進行深入了解:https://gitee.com/openharmony/windowmanager。也希望更多開發(fā)者一起加入進來,與OpenHarmony共同成長。

有興趣進行 OpenHarmony 應(yīng)用開發(fā)的小伙伴,也可以通過以下鏈接了解 OpenHarmony 的窗口管理相關(guān)接口:

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

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5060

    文章

    18975

    瀏覽量

    302210
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3237

    瀏覽量

    57549
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3645

    瀏覽量

    16071

原文標(biāo)題:OpenHarmony 3.1 Release版本關(guān)鍵特性解析——構(gòu)建OpenHarmony窗口框架

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    控制臺窗口主機是什么

    控制臺窗口主機(conhost),通常指的是在Windows操作系統(tǒng)中用于承載和控制控制臺窗口(即命令行界面或CMD窗口)的進程。以下是對控制臺窗口主機的
    的頭像 發(fā)表于 10-08 18:12 ?1014次閱讀

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):窗口管理

    1、程序介紹 本示例展示了在應(yīng)用主窗口中創(chuàng)建和拉起子窗口,以及窗口跳轉(zhuǎn)等功能。 本案例已在OpenHarmony凌蒙派-RK3568開發(fā)板驗
    發(fā)表于 09-18 15:29

    鴻蒙OpenHarmony南向/北向快速開發(fā)教程-迅為RK3568開發(fā)板

    優(yōu)化開發(fā)流程-配置遠程訪問環(huán)境 P8_優(yōu)化開發(fā)流程-編譯源碼和燒寫鏡像 P9_OpenHarmony源碼目錄介紹 P10_整體移植方案介紹 P11_編譯目標(biāo)分析 P12_編譯框架基本概
    發(fā)表于 07-23 10:44

    鴻蒙OS開發(fā):典型頁面場景【一次開發(fā),多端部署】實戰(zhàn)(音樂專輯頁2)

    本示例使用[一次開發(fā)多端部署]中介紹的自適應(yīng)布局能力和響應(yīng)式布局能力進行多設(shè)備(或多窗口尺寸)適配,保證應(yīng)用在不同設(shè)備或不同窗口尺寸下可以正常顯示。
    的頭像 發(fā)表于 05-25 16:47 ?2006次閱讀
    鴻蒙OS開發(fā):典型頁面場景【一次開發(fā),多端部署】實戰(zhàn)(音樂專輯頁2)

    鴻蒙OS開發(fā):【一次開發(fā),多端部署】(音樂專輯主頁)

    本示例使用一次開發(fā)多端部署中介紹的自適應(yīng)布局能力和響應(yīng)式布局能力進行多設(shè)備(或多窗口尺寸)適配,保證應(yīng)用在不同設(shè)備或不同窗口尺寸下可以正常顯示。
    的頭像 發(fā)表于 05-21 14:48 ?646次閱讀
    鴻蒙OS開發(fā):【一次開發(fā),多端部署】(音樂專輯主頁)

    OpenHarmony 成功亮相國際學(xué)術(shù)會議 ASPLOS 2024

    舉行的ASPLOS 2024上成功舉辦。本次學(xué)術(shù)教程會以“OpenHarmony操作系統(tǒng)的關(guān)鍵特性與能力”為主題,聚焦“基于OpenHarmony的前沿學(xué)術(shù)探索機遇與挑戰(zhàn)“,詳細介紹
    的頭像 發(fā)表于 05-16 09:28 ?376次閱讀
    <b class='flag-5'>OpenHarmony</b> 成功亮相國際學(xué)術(shù)會議 ASPLOS 2024

    OpenHarmony實戰(zhàn)開發(fā)-管理系統(tǒng)窗口(僅Stage模型支持)

    連貫流暢。 在OpenHarmony中,應(yīng)用窗口的動效為默認行為,不需要開發(fā)者進行設(shè)置或者修改。 相對于應(yīng)用窗口,在顯示系統(tǒng)窗口過程中,開發(fā)者可以自定義
    發(fā)表于 05-06 15:32

    OpenHarmony實戰(zhàn)開發(fā)-如何實現(xiàn)窗口開發(fā)概述

    操作系統(tǒng)而言,窗口模塊提供了不同應(yīng)用界面的組織管理邏輯。 窗口模塊的用途 在OpenHarmony中,窗口模塊主要負責(zé)以下職責(zé): 提供應(yīng)用和系統(tǒng)界面的
    發(fā)表于 05-06 14:29

    介紹一種OpenAtom OpenHarmony輕量系統(tǒng)適配方案

    本文在不改變原有系統(tǒng)基礎(chǔ)框架的基礎(chǔ)上, 介紹了一種OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)輕量系統(tǒng)適配方案。
    的頭像 發(fā)表于 03-05 09:24 ?1038次閱讀
    <b class='flag-5'>介紹</b>一種OpenAtom <b class='flag-5'>OpenHarmony</b>輕量系統(tǒng)適配方案

    OpenHarmony4.0源碼解析之媒體框架

    媒體框架簡介 媒體框架 multimedia_player_framework 主要提供音視頻的錄制與播放功能。 框架簡介 從框架圖中可以看出,媒體
    的頭像 發(fā)表于 02-26 22:05 ?723次閱讀
    <b class='flag-5'>OpenHarmony</b>4.0源碼解析之媒體<b class='flag-5'>框架</b>

    【鴻蒙】OpenHarmony 4.0藍牙代碼結(jié)構(gòu)簡析

    /master/api當(dāng)前所有應(yīng)用層接口統(tǒng)一歸并到interface倉;api 10中藍牙接口按照profile拆分了多個d.ts文件 框架層https://gitee.com/openharmony/communication_bluetooth該倉之前包含
    的頭像 發(fā)表于 02-26 16:08 ?1422次閱讀
    【鴻蒙】<b class='flag-5'>OpenHarmony</b> 4.0藍牙代碼結(jié)構(gòu)簡析

    OpenHarmony 之 NAPI 框架介紹

    環(huán)境中的 JS 變量與方法。 OpenHarmony 中的 NAPI OpenAtom OpenHarmony(以下簡稱 “OpenHarmony”)應(yīng)用層基于 javascript 語言開發(fā),而系統(tǒng)
    的頭像 發(fā)表于 02-01 17:34 ?625次閱讀
    <b class='flag-5'>OpenHarmony</b> 之 NAPI <b class='flag-5'>框架</b><b class='flag-5'>介紹</b>

    OpenHarmony開源GPU庫Mesa3D適配說明

    : Dayu200-rk3568 一、背景介紹 OpenHarmony對圖形的渲染,支持CPU和GPU兩種方式。為了支持流暢的用戶體現(xiàn),GPU適配是必不可少的。OpenHarmony使用GPU渲染,就必須依賴OpenGL
    發(fā)表于 12-25 11:38

    教程分享!OpenHarmony之NAPI框架介紹

    是 C++語言實現(xiàn)的,這些接口可以幫助 C++代碼創(chuàng)建 JS 變量,或訪問 JavaScript 運行環(huán)境中的 JS 變量與方法。 OpenHarmony 中的 NAPI OpenAtom OpenHarmony(以下簡稱“OpenHa
    的頭像 發(fā)表于 11-30 12:15 ?1308次閱讀
    教程分享!<b class='flag-5'>OpenHarmony</b>之NAPI<b class='flag-5'>框架</b><b class='flag-5'>介紹</b>

    OpenHarmony之NAPI框架介紹

    的 NAPI OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)應(yīng)用層基于 javascript 語言開發(fā),而系統(tǒng)框架層則基于 C++語言。它們之間需要一個橋梁來實現(xiàn)兩種語言代碼之間
    發(fā)表于 11-23 15:36