想了解更多开源,请访问:开源基础软件社区https://ost.51cto。com前言最近在尝试学习OpenHarmony北向开发时,遇到了一个问题。我发现,当应用程序运行在开发板上时,用户在看视频或玩游戏时,往往希望隐藏状态栏、导航栏等不必要的系统窗口,从而获得更好的沉浸式体验。这里提供了一个解决方法。demo效果(前者是设置后,可以看到上下位置被填满,达到沉浸式全面屏的效果)具体步骤这里主要使用'@ohos.com提供的管理窗口的一些基本能力。window',包括当前窗口的创建和销毁,各种属性的设置,以及各个窗口的管理和调度。这是官方OpenHarmony文档OpenAtomOpenHarmony的链接。窗口沉浸效果要实现沉浸效果,一般有3种方法可以设置为全屏显示。设置隐藏状态栏和导航栏。设置全屏布局,使导航栏、状态栏等系统窗口的主题与应用程序主窗口保持一致。我们这里使用第一种方法。窗口模块在OpenHarmony中,窗口模块主要负责以下职责:为应用程序和系统界面提供窗口对象。应用开发者通过窗口加载UI界面,实现界面展示功能。组织不同窗口的显示关系,即维护不同窗口之间的叠加层次和位置属性。应用程序和系统窗口有多种类型,不同类型的窗口有不同的默认位置和覆盖层级(Z轴高度)。同时,用户操作还可以在一定范围内调整窗口的位置和叠加层次。提供窗饰。窗口装饰是指窗口标题栏和窗口边框。窗口标题栏通常包括窗口最大化、最小化、关闭按钮等界面元素,并具有默认的点击行为,方便用户操作;窗口边框方便用户拖动和缩放窗口。窗口装饰是系统的默认行为,开发者可以选择启用/禁用,无需关注UI代码层面的实现。提供窗口动画。在窗口显示、隐藏和窗口切换时,窗口模块通常会添加动画效果,使每个交互过程更加连贯和流畅。在OpenHarmony中,应用窗口的动画效果是默认行为,不需要开发者设置或修改。指导输入事件分发。即根据当前窗口的状态或焦点,分发事件。触摸和鼠标事件是根据窗口的位置和大小分派的,而键盘事件是分派给获得焦点的窗口的。应用开发者可以通过window模块提供的接口来设置窗口是否可以被触摸和聚焦。导入模块首先我们导入功能模块。从“@ohos.window”导入窗口;获取window对象,然后获取当前应用中最后显示的窗口的promise对象。varwindowClass=null;让promise=window.getTopWindow();具体来说,在这个Promise异步回调中,我们使用'windowClass.setFullScreen()'进行沉浸式全屏设置。promise.then((data)=>{windowClass=data;console.info('获取顶部窗口成功。data:'+JSON.stringify(data))}).then(()=>{windowClass.setFullScreen(true)this.windowFull=trueconsole.info('成功获取顶部窗口。数据:')})全部代码
