鴻蒙狀態欄操作

1.鴻蒙設備基礎信息

1.1圖解

1.1窗口內容規避區域

AvoidArea7+??窗口內容規避區域。

窗口內容規避區域。如系統欄區域、劉海屏區域、手勢區域、軟鍵盤區域等與窗口內容重疊時,需要窗口內容避讓的區域。在規避區無法響應用戶點擊事件。

除此之外還需注意規避區域的如下約束,具體為:

  • 底部手勢區域中非導航條區域支持點擊、長按事件透傳,不支持拖入。

  • 左右側邊手勢區域支持點擊、長按以及上下滑動事件透傳,不支持拖入。

  • 導航條區域支持長按、點擊、拖入事件響應,不支持事件向下透傳。

系統能力:?SystemCapability.WindowManager.WindowManager.Core

元服務API:?從API version 11開始,該接口支持在元服務中使用。

名稱類型可讀可寫說明
visible9+boolean規避區域是否可見。true表示可見;false表示不可見。
leftRectRect屏幕左側的矩形區。
topRectRect屏幕頂部的矩形區。
rightRectRect屏幕右側的矩形區。
bottomRectRect屏幕底部的矩形區。

getWindowAvoidArea9+

getWindowAvoidArea(type: AvoidAreaType): AvoidArea

獲取當前應用窗口內容規避的區域。如系統欄區域、劉海屏區域、手勢區域、軟鍵盤區域等與窗口內容重疊時,需要窗口內容避讓的區域。

該接口一般適用于兩種場景:

1、在onWindowStageCreate方法中,獲取應用啟動時的初始布局避讓區域時可調用該接口;

2、當應用內子窗需要臨時顯示,對顯示內容做布局避讓時可調用該接口。

系統能力:?SystemCapability.WindowManager.WindowManager.Core

元服務API:?從API version 11開始,該接口支持在元服務中使用。

?參數:AvoidAreaType?窗口內容需要規避區域的類型枚舉。

名稱說明
TYPE_SYSTEM0表示系統默認區域。一般包括狀態欄、導航欄,各設備系統定義可能不同。
TYPE_CUTOUT1表示劉海屏區域。
TYPE_SYSTEM_GESTURE9+2表示手勢區域。
TYPE_KEYBOARD9+3表示軟鍵盤區域。
TYPE_NAVIGATION_INDICATOR11+4表示導航條區域。

2.獲取鴻蒙設備狀態欄和導航條高度

2.1開啟全屏沉浸式導航模式

在EntryAbility的onWindowStageCreate方法中添加開啟方法。

 onWindowStageCreate(windowStage: window.WindowStage): void {// Main window is created, set main page for this abilityhilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate');windowStage.loadContent('pages/Index', (err) => {if (err.code) {hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));return;}hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.');});//開啟沉浸式狀態欄const windowClass = windowStage.getMainWindowSync()windowClass.setWindowLayoutFullScreen(true).then(() => {console.info('Succeeded in setting the window layout to full-screen mode.');}).catch((err: BusinessError) => {console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err));});}

開啟全屏沉浸式從頭綠到腳。

2.2獲取狀態高度

onWindowStageCreate(windowStage: window.WindowStage): void {// Main window is created, set main page for this abilityhilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate');windowStage.loadContent('pages/Index', (err) => {if (err.code) {hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));return;}hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.');});//開啟沉浸式狀態欄const windowClass = windowStage.getMainWindowSync()windowClass.setWindowLayoutFullScreen(true).then(() => {console.info('Succeeded in setting the window layout to full-screen mode.');}).catch((err: BusinessError) => {console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err));});//  獲取屏幕頂部的矩形區高度,也就是狀態欄高度。// TYPE_SYSTEM:表示系統默認區域。一般包括狀態欄、導航欄,各設備系統定義可能不同。const topRectHeight =windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM).topRect.height//  獲取屏幕屏幕底部的矩形區高度,也就是導航條高度。// TYPE_NAVIGATION_INDICATOR:表示導航條區域。const bottomRectHeight =windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR).bottomRect.heightconsole.log("avoidarea","狀態欄Height:"+topRectHeight+"-狀態欄Height:"+bottomRectHeight)// 保存到AppStorage中,在頁面中通過 @StorageProp("topRectHeight") topRectHeight:number=0//   @StorageProp("bottomRectHeight") bottomRectHeight:number=0  獲取// px2vp(topRectHeight) 由于獲取的高度是像素,在這里需要轉換成vpAppStorage.setOrCreate("topRectHeight",px2vp(topRectHeight))AppStorage.setOrCreate("bottomRectHeight",px2vp(bottomRectHeight))}

效果:

3.設置狀態欄顏色和導航條顏色

window.getLastWindow(getContext()).then((win) => {win.setWindowSystemBarProperties({ statusBarContentColor: value.toString() })})

狀態欄、導航欄的屬性。在設置窗口級狀態欄、導航欄屬性時使用。

元服務API:?從API version 12開始,該接口支持在元服務中使用。

名稱類型必填說明
statusBarColorstring

狀態欄背景顏色,為十六進制RGB或ARGB顏色,不區分大小寫,例如'#00FF00'或'#FF00FF00'。默認值:'#66000000'。

系統能力:?SystemCapability.WindowManager.WindowManager.Core

isStatusBarLightIcon7+boolean

狀態欄圖標是否為高亮狀態。true表示高亮;false表示不高亮。默認值:false。

系統能力:?SystemCapability.WindowManager.WindowManager.Core

statusBarContentColor8+string

狀態欄文字顏色。當設置此屬性后, isStatusBarLightIcon屬性設置無效。默認值:'#E5FFFFFF'。

系統能力:?SystemCapability.WindowManager.WindowManager.Core

navigationBarColorstring

導航欄背景顏色,為十六進制RGB或ARGB顏色,不區分大小寫,例如'#00FF00'或'#FF00FF00'。默認值:'#66000000'。

系統能力:?SystemCapability.WindowManager.WindowManager.Core

isNavigationBarLightIcon7+boolean

導航欄圖標是否為高亮狀態。true表示高亮;false表示不高亮。默認值:false。

系統能力:?SystemCapability.WindowManager.WindowManager.Core

navigationBarContentColor8+string

導航欄文字顏色。當設置此屬性后, isNavigationBarLightIcon屬性設置無效。默認值:'#E5FFFFFF'。

系統能力:?SystemCapability.WindowManager.WindowManager.Core

enableStatusBarAnimation12+boolean

是否使能狀態欄屬性變化時動畫效果。true表示變化時使能動畫效果;false表示沒有使能動畫效果。默認值:false。

系統能力:?SystemCapability.Window.SessionManager

enableNavigationBarAnimation12+boolean

是否使能導航欄屬性變化時動畫效果。true表示變化時使能動畫效果;false表示沒有使能動畫效果。默認值:false。

系統能力:?SystemCapability.Window.SessionManager

?

代碼:

import { window } from '@kit.ArkUI';@Entry
@Component
struct Index {@State message: string = 'Hello World';@StorageProp("topRectHeight") topRectHeight: number = 0@StorageProp("bottomRectHeight") bottomRectHeight: number = 0aboutToAppear(): void {}changeColor(value: ResourceColor|string){window.getLastWindow(getContext()).then((win) => {win.setWindowSystemBarProperties({ statusBarContentColor: value.toString() })})}changeBgColor(value: ResourceColor|string){window.getLastWindow(getContext()).then((win) => {win.setWindowSystemBarProperties({ statusBarColor: value.toString() })})}build() {Column() {Text("狀態欄的高度" + this.topRectHeight).height(this.topRectHeight).backgroundColor(Color.Yellow).width("100%")Text("內容區域")Text("導航條的高度" + this.bottomRectHeight).height(this.bottomRectHeight).backgroundColor(Color.Blue).width("100%").fontColor(Color.White)Button("設置狀態欄的字體顏色為紅色").onClick(()=>{this.changeColor(Color.Red)})Button("設置狀態欄的字體顏色為白色").onClick(()=>{this.changeColor("#FFFFFF")})Button("設置狀態欄為白色").onClick(()=>{this.changeBgColor("#FFFFFF")})Button("設置狀態欄為黑色").onClick(()=>{this.changeBgColor("#000000")})Button("設置狀態欄為全透明").onClick(()=>{this.changeBgColor("#00FFFFFF")})Button("設置狀態欄為半透明").onClick(()=>{this.changeBgColor("#80ffffff")})}.justifyContent(FlexAlign.Center).backgroundColor(Color.Green).height('100%').width('100%')}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89278.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89278.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89278.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Product Hunt 每日熱榜 | 2025-07-17

1. Brain MAX by ClickUp 標語:一款AI應用統治一切:你的知識 語音轉文字 介紹:Brain MAX 是 ClickUp 完全原生的桌面應用,旨在提升生產力,幫助你擺脫 AI 的雜亂無章。只需每月 9 美元,就可以使用所有的 …

如何使用VScode使用ssh連接遠程服務器不需要輸入密碼直接登錄

ssh-keygen 之后一直默認 回車 確認即可結果 (base) amaxamax:/data/std$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/amax/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:…

vue實現el-table-column中自定義label

vue實現el-table-column中自定義label<el-table-columnlabel"操作"align"left"width"50"><template #header><div><el-buttonsize"mini"type"primary"icon"el-icon-plus"circle></el-…

Vue 常用的 ESLint 規則集

對Vue項目來說&#xff0c;Vue 官方通過 eslint-plugin-vue 提供了多個規則集&#xff08;Rule Sets&#xff09;&#xff0c;適用于不同嚴格度和 Vue 版本。以下是主要的規則集及其對應的 ESLint 插件和用途&#xff1a; 1. Vue 2.x 規則集 適用于 Vue 2 項目&#xff0c;規則…

AbMole小課堂 | Angiotensin II(血管緊張素Ⅱ)在心血管研究中的多元應用

Angiotensin II&#xff08;血管緊張素Ⅱ&#xff0c;AbMole&#xff0c;M6240&#xff09;是一種血管收縮劑&#xff0c;也是腎素-血管緊張素系統 (RAS) 的主要效應肽。Angiotensin II參與動物的血壓調節、水電解質平衡等經典生理過程在科研中Angiotensin II被廣泛用于動物心血…

【Unity】Mono相關理論知識學習

一種編譯技術。優點&#xff1a;支持JIT編譯&#xff1a;在運行時將IL編譯成機器碼。首次執行稍慢&#xff0c;好處在于運行更快&#xff0c;迭代更高效。構建速度快&#xff1a;無需將IL轉成C&#xff0c;構建過程省去了IL2CPP的轉換和原生編譯步驟&#xff0c;適合開發階段快…

React源碼4 三大核心模塊之一:Schedule,scheduleUpdateOnFiber函數

scheduler工作階段在React內部被稱為schedule階段。在《React源碼3》&#xff0c;我們已經將update加入隊列并返回到了根容器節點root。function updateContainer(element, container, parentComponent, callback) {//前面略過var root enqueueUpdate(current$1, update, lane…

Unity3D + VS2022連接雷電模擬器調試

本文參考了Unity3D Profiler 連接真機和模擬器_unity 連接雷電模擬器-CSDN博客 具體步驟&#xff1a; 1、cmd打開命令窗口&#xff0c;輸入adb devices&#xff0c;確認能檢測到模擬器 示例&#xff1a;List of devices attached emulator-5554 device 2、…

學習軟件測試的第十五天

1.會寫測試用例嗎&#xff1f;測試用例有什么要素“會的&#xff0c;我寫過多個功能測試和接口測試的測試用例。我寫用例的時候會根據需求文檔或原型圖分析測試點&#xff0c;然后從正常流程、異常流程、邊界情況等方面設計測試場景。每條用例我都會包含&#xff1a;用例編號、…

C++硬實時調度:原理、實踐與最佳方案

在工業自動化、航空航天、醫療設備等領域&#xff0c;系統的實時性往往直接關系到生命安全和財產損失。C作為高性能編程語言&#xff0c;為硬實時系統開發提供了強大支持。本文將深入探討C硬實時調度的核心技術&#xff0c;從操作系統原理到代碼實現的全方位解析。 一、實時系統…

LeetCode 1156.單字符重復子串的最大長度

如果字符串中的所有字符都相同&#xff0c;那么這個字符串是單字符重復的字符串。 給你一個字符串 text&#xff0c;你只能交換其中兩個字符一次或者什么都不做&#xff0c;然后得到一些單字符重復的子串。返回其中最長的子串的長度。 示例 1&#xff1a; 輸入&#xff1a;text…

K近鄰算法的分類與回歸應用場景

K近鄰算法的分類與回歸應用場景 K近鄰&#xff08;K-Nearest Neighbors, KNN&#xff09;算法是一種基礎但強大的機器學習方法&#xff0c;它既可以用于分類問題&#xff0c;也能解決回歸問題。 兩者的核心思想都是基于"近朱者赤&#xff0c;近墨者黑"的原理&#xf…

算法精講--正則表達式(二):分組、引用與高級匹配技術

算法精講–正則表達式&#xff08;二&#xff09;&#xff1a;分組、引用與高級匹配技術 &#x1f680;正則表達式的真正力量在于組合使用各種語法元素&#xff0c;創造出強大而精確的匹配模式&#xff01; —— 作者&#xff1a;無限大 推薦閱讀時間&#xff1a;25 分鐘 適用人…

python+requests 接口自動化測試實戰

首先介紹一下python的requests模塊&#xff1a; requests的使用介紹&#xff1a;requests快速入門 Python結合requests庫實現接口自動化測試環境說明&#xff1a; 1.WIN 7, 64位 2.Python3.4.3 &#xff08;pip-8.1.2&#xff09; 3.Requests —>pip install requests 4.U…

NAT 實驗

NAT 實驗 一.實驗拓撲圖實驗目的 1.按照圖示配置 IP 地址 2.私網 A 通過 R1 接入到互聯網&#xff0c;私網 B 通過 R3 接入到互聯網 3.私網 A 內部存在 Vlan10 和 Vlan20&#xff0c;通過 R1 上單臂路由訪問外部網絡 4.私網 A 通過 NAPT 使 Vlan10 和 Vlan20 都能夠使用 R1 的公…

buuctf——web刷題第三頁

第三頁 目錄 [FBCTF2019]RCEService [0CTF 2016]piapiapia [Zer0pts2020]Can you guess it? [WUSTCTF2020]顏值成績查詢 [SUCTF 2019]Pythonginx [MRCTF2020]套娃 [CSCCTF 2019 Qual]FlaskLight [watevrCTF-2019]Cookie Store [WUSTCTF2020]CV Maker [紅明谷CTF 202…

前后端分離項目中的接口設計與調用流程——以高仙機器人集成為例

一、背景介紹在前后端分離項目開發中&#xff0c;前端頁面需要頻繁調用后端接口獲取數據。在高仙機器人對接項目中&#xff0c;我們采用了若依&#xff08;RuoYi&#xff09;框架&#xff0c;前端通過統一的 API 封裝與后端進行數據交互&#xff0c;而后端再對接高仙官方的 OPE…

【第五節】部署http接口到ubuntu server上的docker內

描述清楚需求&#xff0c;讓deepseek幫我們寫一個demo&#xff0c;文件結構如下 FLASK_API_001 ├── app.py └── Dockerfile └── requirements.txtapp.pyfrom flask import Flask, jsonify, requestapp Flask(__name__)# 根路由 app.route(/) def home():return "…

在 IntelliJ IDEA 中添加框架支持的解決方案(沒有出現Add Framework Support)

在 IntelliJ IDEA 中添加框架支持的解決方案 問題背景 版本變化&#xff1a;在 IntelliJ IDEA 2023.2 及更高版本中&#xff0c;項目右鍵菜單中的 “Add Framework Support” 選項已被移除。 常見需求&#xff1a;為 Java 項目添加框架支持&#xff08;如 Maven、Spring 等&am…

北京-4年功能測試2年空窗-報培訓班學測開-第五十天

咦&#xff0c;昨天路上寫一半就到家了&#xff0c;后來想早點睡就忘了還要發了&#xff0c;現在趕緊補上昨天是最后一節課(我們將一整天的課稱為一節&#xff09;&#xff0c;這就結課了昨天講了簡歷編寫&#xff0c;面試要準備的內容&#xff0c;還有redis和docker也沒有什么…