首页 > 其他分享 >探索鸿蒙应用开发中的沉浸式模式与安全区域文字颜色

探索鸿蒙应用开发中的沉浸式模式与安全区域文字颜色

时间:2024-09-15 18:56:51浏览次数:3  
标签:沉浸 鸿蒙 探索 安全 区域 全屏 页面

在鸿蒙应用开发中,实现沉浸式显示模式与改变安全区域文字颜色 可以为用户带来更加流畅和美观的视觉体验,本文将详细介绍如何在鸿蒙应用中实现特定页面的沉浸式显示,以及在这个过程中遇到的问题和解决方案。

效果展示

开启沉浸式模式

关闭沉浸式模式

改变安全区域文字颜色

一、需求背景

我们的目标是在鸿蒙应用中实现 “我的” 页面的全屏沉浸式显示以及改变安全区域文字颜色,而其他页面不需要这种显示模式。

二、实现过程中的挑战与解决方案

1.初步尝试与问题

起初,当我们想要设置某个组件的沉浸式模式,可以通过在当前的aboutToAppear中使用window模块的getLastWindowsetWindowLayoutFullScreen两个方法来处理全屏显示。但是当我们设置完毕以后,会发现我们在任何一个页面设置过一次以后,其他页面也会跟着全屏显示,这也导致出一个新问题,当我们从其他tab标签进入 其他tab标签时,会出现底部tab栏闪动的问题。很明显,这是我们不愿意看到的

2.调整策略与新问题

首先,解决tab栏闪动这个问题,我们可以将所有页面的全屏模式都开启,但是,这又会带给我们一个新的BUG,那就是我们只有部分页面需要全屏显示,不需要全屏显示的页面内容会突破安全区域显示,导致内容显示不正常。

3.解决内容突破安全区问题

aboutToAppear中使用window模块getLastWindowsetWindowLayoutFullScreen两个方法来处理整个应用的全屏显示后,需要通过获取手机的安全高度来结合padding适配顶部内容的正常显示。具体步骤如下:

通过window模块的getLastWindowgetWindowAvoidArea来获取安全高度。安全高度获取到的是px单位,需要使用px2vp函数转换成vp单位。

 最后将安全区域高度保存到AppStorage中共享给其他页面使用。从AppStorage中获取安全区域高度,结合padding适配页面内容的顶部显示。

4.设置安全区域文字颜色

 使用window模块getLastWindow
setWindowSystemBarProperties({statusBarContentColor:颜色})来设置安全区域文字颜色。可以设置为其他颜色

5.沉浸式模式类封装

在鸿蒙应用开发过程中,为了实现更高效的开发和更好的用户体验,我们常常需要对特定的功能进行封装和优化。在沉浸式模式和安全区域设置方面,为了更好地管理这些复杂的功能,我们封装了安全区域工具类windowManager.ets

通过这个工具类,我们可以在需要开启沉浸式模式的页面轻松调用相应的方法,极大地提高了代码的可复用性。不再需要在每个页面中重复编写复杂的沉浸式模式和安全区域设置代码,只需简单地调用工具类中的方法,即可实现所需的功能。

示例如下:

enableFullScreen - 开启全屏。

disableFullScreen - 关闭全屏。

settingStatusBarLight - 设置状态栏文字为白色。

settingStatusBarDark - 设置状态栏域文字为黑色。

三、总结

通过以上一系列的操作,我们成功地在鸿蒙应用中实现了特定页面的沉浸式显示和更改安全区域的颜色,同时解决了在实现过程中遇到的各种问题。这不仅提升了应用的视觉效果,也为用户带来了更好的使用体验。在鸿蒙应用开发中,不断探索和解决各种问题,能够让我们的应用更加完善和出色。

标签:沉浸,鸿蒙,探索,安全,区域,全屏,页面
From: https://blog.csdn.net/weixin_61697764/article/details/142286413

相关文章

  • 探索PHP命名空间自动加载:提升代码组织与维护效率
    在PHP开发中,随着项目规模的扩大,代码的管理与维护变得越来越复杂。为了提高代码的可维护性和组织性,PHP引入了命名空间和自动加载机制。通过合理使用这些特性,开发者可以有效减少命名冲突,并提升代码复用性和开发效率。命名空间是PHP中用来解决类、函数、常量之间命名冲突的工具。想......
  • 探索C#编程:高效解决N皇后问题的回溯算法实现
    在C#中,回溯算法是一种通过探索所有可能的候选解来找出所有解的算法。如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化来撤销上一步或上几步的计算,以获得新的候选解。这个过程一直进行,直到找到所有解或确定无解。回溯算法常用于解决组......
  • 重生之我要当前端大王–鸿蒙next篇 02 常用布局组件
    重生之我要当前端大王–鸿蒙next篇02常用布局组件第三篇章鸿蒙next星河版前言阅读本章,学习Flex布局、Grid网格布局、Stack层叠布局一、Flex布局和html的flex相识,arkUi的flex组件也分为主轴和副轴,并提供声明式api进行设置排布样式,让我们来学习一下@Entry@Component......
  • 鸿蒙应用开发快速学习指南(初级篇-4 应用程序框架基础)
    应用程序框架基础第四课应用程序框架基础在上一课结束后,补足了声明式UI部分的知识之后,依旧是先看习题。判断题在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。正确(True)错误(False)首先问题中提到了Stage模型,什......
  • 关于鸿蒙开发框架,页面搭建样式语法总结
    鸿蒙中的变量/常量创建采用了ts语法我们在声明变量的同时需要指定变量类型,定义变量时也是要遵守变量命名规范:    1.只能包含数字、字母、下划线、$,不能以数字开头…重点    2.不能使用内置关键字或保留字,比如let、const    3.严格区分大小写1.变......
  • 利士策分享:探索适宜娱乐,实现心灵宁静与成长
    利士策分享:探索适宜娱乐,实现心灵宁静与成长在探讨如何找到并实践适宜的娱乐方式时,我们可以从以下几个方面入手,结合具体建议和方法,让娱乐成为我们生活中的一抹亮色。一、明确娱乐目的首先,明确娱乐的目的至关重要。是为了放松身心、缓解压力,还是为了增进人际关系、拓宽视野?目......
  • 【鸿蒙】HarmonyOS NEXT星河入门到实战7-ArkTS语法进阶
    目录1、Class类1.1Class类实例属性1.2 Class类构造函数1.3Class类定义方法1.4静态属性和静态方法1.5继承extends和super关键字1.6instanceof检测是否实例1.7.修饰符(readonly、private、protected、public)1.7.1readonly1.7.2Private  1.7.3......
  • 【鸿蒙】HarmonyOS NEXT星河入门到实战4-ArkTS界面布局深入
    目录一、布局元素组成1.1内边距-padding1.2外边距margin1.3实战案例-QQ音乐-登录1.4边框border 二、设置组件圆角2.1基本圆角设置2.2特殊形状的圆角设置三、背景属性3.1背景图片-backgroundImage3.2背景图片位置-backgroundImagePosition3.3背景定位-......
  • 【鸿蒙】HarmonyOS NEXT星河入门到实战5-基础语法
    目录一、字符串拼接1.1常规字符串拼接1.2模板字符串`hello`(符号在键盘的tab上面)二、类型转换(数字和字符串)2.1字符串转数字 2.2数字转字符串三、交互3.1点击事件3.2状态管理 3.3计数器案例四、运算符4.1算数运算符 4.2赋值运算符4.3点赞案例  ......
  • 数字OA——低代码开发平台范赋能企业设计与探索
    在数字化转型的浪潮中,企业面临着快速适应市场变化和提高业务效率的双重挑战。传统的软件开发方式往往耗时长、成本高,难以满足企业敏捷开发的需求。低代码开发平台应运而生,它通过提供可视化的开发环境和丰富的组件库,极大地降低了应用开发的门槛,加速了软件交付周期。本文将围绕JN......