鸿蒙状态栏操作

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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也没有什么…