女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

OpenHarmony沉浸式界面開發代碼教程

OpenHarmony技術社區 ? 來源:OST開源開發者 ? 作者:OST開源開發者 ? 2023-06-06 09:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

沉浸式界面通常是指全屏顯示,即當前畫面占據整個屏幕。畫面放大的同時,讓用戶擺脫無關信息的干擾,帶給用戶沉浸式的體驗。

常見的場景有:視頻播放、游戲等。本例即為大家介紹如何開發沉浸式界面。

效果呈現

本例中的沉浸式界面有三種實現方式,對應效果如下:

方案一:顏色背景鋪滿 方案二:圖片背景鋪滿

方案三:背景鋪滿的同時、狀態欄不可見

運行環境

本例基于以下環境開發,開發者也可以基于其他適配的版本進行開發:

IDE:DevEco Studio 3.1 Beta2

SDK:Ohos_sdk_public 3.2.11.9(API Version 9 Release)

實現思路

如果一個應用想要獲得沉浸式的體驗,開發者可以通過以下三種方式進行實現:

顏色背景通鋪:使應用頁面的背景色和狀態欄、導航欄的背景色一致??赏ㄟ^ setWindowSystemBarProperties 進行設置。

圖片背景通鋪:將狀態欄、導航欄的背景色設置為透明以便呈現應用界面的背景,同時通過 windowClass.on 接口獲取到狀態欄、導航欄的區域信息,進行規避處理,以免狀態欄、導航欄的內容遮擋住應用內容。

隱藏導航欄和狀態欄:使用 setWindowSystemBarEnable 設置導航欄和狀態欄為隱藏狀態。

說明:沉浸式的設置最好放在 ability 的 onWindowStageCreate 的生命周期里,此時剛好可以獲取窗口的信息,放在頁面頁面生命周期里會出現窗口大小不一致,影響體驗。

下文將分別介紹這三種方案的具體開發步驟。

開發步驟

①顏色背景通鋪

此方案通過調用 setWindowSystemBarProperties 接口將狀態欄和導航欄的背景色設置為跟應用窗口相同的顏色,以達到界面全屏的效果。

具體代碼如下:


importwindowfrom'@ohos.window';
importcommonfrom'@ohos.app.ability.common';

@Entry
@Component
structType2{
@Statemessage:string='HelloWorld'
//獲取UIAbility上下文
context:common.UIAbilityContext=getContext(this)ascommon.UIAbilityContext
asyncsetSystemBar(){
//獲取當前應用窗口
letwindowClass:window.Window=awaitwindow.getLastWindow(context)
//將狀態欄和導航欄的背景色設置為跟應用窗口相同的顏色
awaitwindowClass.setWindowSystemBarProperties({
navigationBarColor:"#00FF00",
statusBarColor:"#00FF00",
navigationBarContentColor:"#00FF00",
statusBarContentColor:"#00FF00"
})
}

aboutToAppear(){
this.setSystemBar()
}

build(){
Row(){
Column(){
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
.height('100%')
}
}
此方案的優勢在于不需要處理應用窗口和狀態欄、導航欄窗口的遮擋關系,因為此方案沒有使用 setWindowLayoutFullScreen 接口設置沉浸式布局,所以三個窗口是平鋪的,不會重疊。劣勢在于無法將應用的背景圖等信息延伸到狀態欄、導航欄窗口中。適用于扁平化設計風格的應用。

②圖片背景通鋪

這種方案可以實現圖片背景的通鋪,同時又能避免狀態欄和導航欄的內容跟應用內容相互遮擋,導致顯示效果異常。

為了能讓應用的有效顯示范圍避開系統的狀態欄和導航欄,以免內容重疊,我們可以通過下面代碼獲取系統規避區域的大小,并對這一塊區域做出相應的規避。

windowClass.on(type:‘avoidAreaChange’,callback:Callback<{AvoidAreaType,?AvoidArea}>)
其中回調參數 AvoidArea 是規避區域,可以通過其獲取規避區域的具體范圍;AvoidAreaType 是規避區域的類型其取值如下,示例中需要規避的狀態欄和導航欄屬于 TYPE_SYSTEM 類型。

4eecce7c-0408-11ee-90ce-dac502259ad0.png

具體代碼如下:

page 代碼:

//index.ets
@Entry
@Component
structType3{
@Statemessage:string='HelloWorld'
@StorageLink("topHeight")topHeight:number=0
@StorageLink("bottomHeight")bottomHeight:number=0

build(){
Column(){
//在界面頂部放置一個Row組件,用于占位
Row(){

}
.width("100%")
//設置Row組件的高度為狀態欄的高度,可避免界面內容與狀態欄內容重疊
.height(px2vp(this.topHeight))
Row(){
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.position({x:0,y:0})
}
.width("100%")
.flexGrow(1)
//在界面底部放置一個Row組件,用于占位
Row(){

}
.width("100%")
//設置Row組件的高度為導航欄的高度,可避免界面內容與導航欄內容重疊
.height(px2vp(this.bottomHeight))
}
.backgroundImage($r("app.media.icon"))
.backgroundImageSize(ImageSize.Cover)
.width("100%")
.height("100%")
}
}

ability 代碼:

//MainAbility.ts
importwindowfrom'@ohos.window';

asyncfunctionenterImmersion(windowClass:window.Window){
//獲取狀態欄和導航欄的高度
windowClass.on("avoidAreaChange",({type,area})=>{
if(type==window.AvoidAreaType.TYPE_SYSTEM){
//將狀態欄和導航欄的高度保存在AppStorage中
AppStorage.SetOrCreate("topHeight",area.topRect.height);
AppStorage.SetOrCreate("bottomHeight",area.bottomRect.height);
}
})
//設置窗口布局為沉浸式布局
awaitwindowClass.setWindowLayoutFullScreen(true)
awaitwindowClass.setWindowSystemBarEnable(["status","navigation"])
//設置狀態欄和導航欄的背景為透明
awaitwindowClass.setWindowSystemBarProperties({
navigationBarColor:"#00000000",
statusBarColor:"#00000000",
navigationBarContentColor:"#FF0000",
statusBarContentColor:"#FF0000"
})
}

exportdefaultclassMainAbilityextendsAbility{
...
asynconWindowStageCreate(windowStage:window.WindowStage){
letwindowClass:window.Window=awaitwindowStage.getMainWindow()
awaitenterImmersion(windowClass)
windowStage.loadContent('pages/page5')
}
...
}

③隱藏狀態欄、導航欄

隱藏狀態欄、導航欄可以達到完全沉浸的效果,使用 setWindowSystemBarEnable 接口即可實現。

具體代碼如下:

importwindowfrom'@ohos.window';
importcommonfrom'@ohos.app.ability.common';

@Entry
@Component
structType3{
@Statemessage:string='HelloWorld'
context:common.UIAbilityContext=getContext(this)ascommon.UIAbilityContext
asyncsetSystemBar(){
letwindowClass=awaitwindow.getLastWindow(context)
//設置導航欄,狀態欄不可見
awaitwindowClass.setWindowSystemBarEnable([])
}

aboutToAppear(){
this.setSystemBar()
}

build(){
Row(){
Column(){
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
.backgroundColor("#ffee33")
.height('100%')
}
}

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8997

    瀏覽量

    153707
  • 游戲
    +關注

    關注

    2

    文章

    773

    瀏覽量

    26851
  • 開源
    +關注

    關注

    3

    文章

    3678

    瀏覽量

    43815
  • 界面開發
    +關注

    關注

    0

    文章

    6

    瀏覽量

    6332
  • OpenHarmony
    +關注

    關注

    29

    文章

    3851

    瀏覽量

    18587

原文標題:OpenHarmony沉浸式界面開發

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    OpenHarmony南向開發案例:【分布畫板】

    使用OpenHarmony3.1-Release開發的應用。通過OpenHarmony的分布技術,使多人能夠一起畫畫。
    的頭像 發表于 04-12 14:40 ?1376次閱讀
    <b class='flag-5'>OpenHarmony</b>南向<b class='flag-5'>開發</b>案例:【分布<b class='flag-5'>式</b>畫板】

    鴻蒙應用/元服務開發-窗口(Stage模型)體驗窗口沉浸能力

    的),達到預期效果。 二、開發步驟 1.獲取應用主窗口。 通過getMainWindow接口獲取應用主窗口。 2.實現沉浸效果。 調用setWindowSystemBarEnable接口,設置導航欄
    發表于 02-06 15:08

    沉浸互動投影大揭秘!原來它是這樣的...

    `沉浸互動投影近兩年備受關注,作為一種新型的投影方式,作為一個高科技創新的產物,就是從各個層面包圍著觀眾,能夠全面的覆蓋觀眾的視角,達到一種身臨其境的體驗感,被越來越多的領域所應用。 沉浸
    發表于 12-10 18:14

    OpenHarmony 應用開發快速入門

    Studio V2.2 Beta1及更高版本,在使用JS語言開發時,除傳統代碼方式外,還支持使用低代碼方式。OpenHarmony代碼
    發表于 05-06 16:03

    OpenHarmony快速入門及開發應用所必備的基礎知識

    及更高版本中支持。OpenHarmony代碼開發方式具有豐富的UI界面編輯功能,遵循JS開發規范,通過可視化
    發表于 05-12 14:11

    【PIMF】低代碼(可視化界面)入門OpenHarmony3.1 Release應用開發

    Studio 3.0 Beta3 for OpenHarmony進行低代碼開發OpenHarmony應用。前言OpenHarmony 3.
    發表于 05-20 11:54

    OpenHarmony 官網文檔有哪些上新?上篇:應用開發文檔上新

    信息中心,首版本支持如下能力:● 提供 OpenHarmony 應用開發快速入門、DevEco Studio 版本說明、常見問題的內容集成,沉浸的信息閱讀體驗。● 支持文檔內容與
    發表于 06-14 11:17

    開發樣例】OpenHarmony分布購物車

    設計OpenHarmony技術特性eTS UI分布調度分布數據管理3.支持OpenHarmony版本OpenHarmony 3.0 LT
    發表于 07-29 14:17

    沉浸剖析OpenHarmony代碼》開放100頁樣章

    沉浸剖析OpenHarmony代碼》開放100頁樣章梁開祝2022.09.29這本書正在排版印刷中,不出意外的話,在10月中下旬便可面市了。目前,此書的定價和訂購鏈接暫時還沒有確
    發表于 09-29 11:33

    openharmony代碼質量如何 openharmony代碼下載地址

    概念定義的新型應用,不支持基于安卓 API/SDK 開發的用戶應用程序運行。 ? 源碼獲取方式 ? ? ? ?openharmony代碼下載地址:https://hmxt.org
    的頭像 發表于 06-22 17:18 ?2407次閱讀

    openharmony 運行代碼操作

    openharmony 運行代碼操作 openharmony 運行代碼,本文主要介紹windows環境下OpenHarmony社區
    的頭像 發表于 06-21 19:46 ?2522次閱讀

    openharmony分支代碼開源

    代碼。 據了解,OpenHarmony是開放原子開源基金會孵化及運營的開源項目,由華為捐贈。 L2 分支沒有安卓代碼,是完全的鴻蒙系統,能夠使用鴻蒙的分布應用,不兼容安卓。
    的頭像 發表于 06-23 10:06 ?1636次閱讀

    openharmony代碼獲取分析

    本文檔將介紹如何獲取OpenHarmony源碼并說明OpenHarmony的源碼目錄結構。OpenHarmony代碼以組件的形式開放,開發
    的頭像 發表于 06-23 16:30 ?3117次閱讀
    <b class='flag-5'>openharmony</b><b class='flag-5'>代碼</b>獲取分析

    基于OpenHarmony的分布應用開發框架使用教程

    電子發燒友網站提供《基于OpenHarmony的分布應用開發框架使用教程.zip》資料免費下載
    發表于 04-12 11:19 ?10次下載

    openharmony開源社區 OpenHarmony開發樣例上新了

    工作委員會負責運作。OpenHarmony 是由華為公司捐贈智能終端操作系統基礎能力相關代碼,由全球開發者共建的開源分布操作系統,具備面向全場景、分布
    的頭像 發表于 04-25 16:37 ?2762次閱讀