揭秘鸿蒙 HarmonyOS NEXT:沉浸式页面开发实战攻略
踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398?ha_source=hmosclass-bokeyuan&ha_sourceId=89000444
概述
本文章基于HarmonyOS NEXT操作系统,API12以上的版本。
沉浸式开发模式,旨在让应用界面高度聚焦于内容呈现,最大程度避免用户受到无关元素的干扰。在移动端应用里,全屏窗口由状态栏、应用界面和导航栏构成。在进行沉浸式页面开发时,通常会采用将应用页面拓展至状态栏和导航栏区域的方式,以此实现以下目标:
· 使页面和避让区域的色调统一,为用户提供更好的视觉体验。
· 最大程度利用屏幕可视区域,使页面获得更大的布局空间。
· 提供完全沉浸的体验,让用户沉浸其中,不被其他事物所干扰。
本文将介绍沉浸式页面的实现方案、原理以及提供以下常见沉浸式页面开发场景下一些适配问题的解决方案。
· [顶部或底部背景延伸场景]
· [顶部图片延伸场景]
· [滚动列表底部延伸场景]
· [全屏沉浸式场景]
· [深色背景下状态栏颜色适配场景]
实现原理
针对上面的设计要求,可以通过如下两种方式实现应用沉浸式效果:
· [窗口全屏布局方案]:调整布局系统为全屏布局,界面元素延伸到状态栏和导航条区域实现沉浸式效果。当不隐藏避让区时,可通过接口查询状态栏和导航条区域进行可交互元素避让处理,并设置状态栏或导航条的颜色等属性与界面元素匹配。当隐藏避让区时,通过对应接口设置全屏布局即可。
· [组件安全区方案]:布局系统保持安全区内布局,然后通过接口延伸绘制内容(如背景色,背景图)到状态栏和导航条区域实现沉浸式效果。
如何区分或使用?
组件安全区该方案下,界面元素仅做绘制延伸,无法单独布局到状态栏和导航条区域,针对需要单独布局UI元素到状态栏和导航条区域的场景建议使用窗口全屏布局方案处理。
关键技术
方案一:使用 Window.setWindowLayoutFullScreen() 方法设置窗口为全屏模式。
这种方案一般适用于一级界面Index中,要根据需求,看布局中的UI元素是否需要避让状态栏和导航条,否则可能产生UI元素重叠等情况。
如果,对控件顶部设置padding(具体数值与状态栏高度一致),实现对状态栏的避让;对底部设置padding(具体数值与底部导航条区域高度一致),实现对底部导航条的避让。
如果,去掉顶部和底部的padding设置,即不避让状态栏和导航条,UI元素就会发生重叠。
代码如下:
方案二:设置组件的 expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) 属性,扩展组件的安全区域到状态栏和导航栏,从而实现沉浸式。
代码如下:
场景分析
场景一 顶部或底部背景延伸场景
场景描述
页面背景需要延伸到状态栏和导航条区域,页面内容在安全区展示。
开发步骤
使用[expandSafeArea]属性扩展背景组件安全区域
给设置背景色的组件设置expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]),使背景色延伸到状态栏和导航条。由于[expandSafeArea]属性不影响子组件的布局,所以Tabs组件内的内容默认在安全区域布局,避让状态栏和导航条。
代码如下:
场景二 顶部图片延伸场景
场景描述
页面顶部的图片要延伸到状态栏中去,形成沉浸式效果。顶部的返回按钮等交互组件,要合理避让状态栏。
开发步骤
1. 设置图片expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP]),扩展图片上方的安全区域。由于[expandSafeArea]属性不影响兄弟组件的布局,顶部的按钮区域默认避让状态栏。
2. 设置Swiper组件的[clip]属性为false,不裁剪内部组件。在设置[expandSafeArea]属性的组件的父组件是滚动类容器时,需配合[clip]属性使用。
代码如下:
场景三 滚动列表底部延伸场景
场景描述
在列表滚动场景中,滚动时内容可与导航条区域重合,滚动到底部时,底部内容需避让导航条。
开发步骤
1. 设置列表组件ListexpandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.BOTTOM]),扩展列表底部到安全区域。此时List组件显示区域扩大,滚动时列表内容可在导航条区域显示。
2. 将滚动到底部的提示添加在列表项末尾,由于设置[expandSafeArea]属性不影响子组件的布局,所以滚动到底部时提示文字默认会避让导航条。
场景四 全屏沉浸式场景
场景描述
在一些视频播放或启动页的沉浸式页面中,为了更好的观看或操作体验,往往需要隐藏状态栏和导航栏。
开发步骤
在页面显示或隐藏时,使用[Window.setWindowLayoutFullScreen()]方法设置窗口是否为全屏模式,使用[Window.setWindowSystemBarEnable()]方法设置状态栏和导航条显隐。
代码如下:
场景五 深色背景下状态栏颜色适配场景
场景描述
在某些将深色背景延伸到状态栏的沉浸式页面中,需要设置状态栏时间文字、信号图标、电量图标等内容为浅色进行适配,避免状态栏内容不清晰,以此提升用户的视觉体验。
开发步骤
1. 设置背景图片组件expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]),扩展安全区域到状态栏和导航栏,实现沉浸式效果。
2. 在页面显示或隐藏时,使用[Window.setWindowSystemBarProperties()]方法设置状态栏内容的颜色。
此次 HarmonyOS NEXT 沉浸式页面开发实践,只是探索的开端。未来,技术浪潮将不断奔涌,希望会有更多的开发者们能以此次经验为基石,在技术海洋中持续破浪前行,利用 HarmonyOS NEXT 的特性创造出更多震撼人心的作品,为鸿蒙世界添砖加瓦。(转载自51CTO,作者:lucky志)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
不会写 SQL 也能出报表?积木报表 + AI 30 秒自动生成报表和图表
还在为报表写复杂 SQL 抓耳挠腮?报表制作太复杂不会用?来试试积木报表吧,通过 AI 30 秒即可生成报表和图表,真的是超简单。 积木报表 v1.9.6 + 版本新增了 AI 助手功能,AI 助手可以帮助用户快速生成 sql 语句、快速生成报表和图表,极大的提高了报表设计的效率 一、效果 1.1 AI 根据业务描述生成sql 语句: 1.2 AI 根据业务描述生成报表设计: 1.3 AI 根据业务描述生成图表设计 二、实现方式 2.1 前置条件 积木报表的 AI 助手功能依赖于JeecgBoot系统的AI大模型模块,所以若想使用该功能,需要运行JeecgBoot系统,并且在系统中配置好AI大模型模块的相关参数;或者将积木报表集成在JeecgBoot系统中使用。 2.2 JeecgBoot 配置 在JeecgBoot系统中,需要配置自己的LLM模型,并且更新 AI 工作流中 LLM 节点的配置参数,具体配置步骤如下: 进入JeecgBoot系统的AI大模型模块,点击左侧菜单中的AI模型配置,进入配置页面 点击左上角的添加模型按钮,添加自己的模型配置 在弹出的对话框中,选择模型供应商(本...
-
下一篇
鸿蒙NEXT开发案例:亲戚关系计算器
踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398?ha_source=hmosclass-bokeyuan&ha_sourceId=89000444 【引言】 在快节奏的现代生活中,人们往往因为忙碌而忽略了与亲戚间的互动,特别是在春节期间,面对众多的长辈和晚辈时,很多人会感到困惑,不知道该如何正确地称呼每一位亲戚。针对这一问题,我们开发了一款基于鸿蒙NEXT平台的“亲戚关系计算器”应用,旨在帮助用户快速、准确地识别和称呼他们的亲戚。 【环境准备】 ·操作系统:Windows 10 ·开发工具:DevEco Studio NEXT Beta1 Build Version: 5.0.3.806 ·目标设备:华为Mate60 Pro ·开发语言:ArkTS ·框架:ArkUI ·API版本:API 12 ·三方库:@nutpi/rela...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker容器配置,解决镜像无法拉取问题
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS关闭SELinux安全模块