HarmonyOS 鸿蒙Next 有没有获取当前window是否是全屏状态(沉浸式)的接口

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 有没有获取当前window是否是全屏状态(沉浸式)的接口

当前设置页面全屏是通过 windowClass.setWindowLayoutFullScreen(isLayoutFullScreen)来设置的,但是在具体的应用场景中是page页面为单位,有些page页面需要显示全屏,有些page是不需要的;
当页面A通过window开启了全屏显示,那么其他在这个window上的page页面都是全屏的(如果页面没有主动关闭全屏);
所以页面A需要在不可见的时候恢复默认的window状态,但是当前没有状态查询接口,页面A无法设置还原窗口状态


更多关于HarmonyOS 鸿蒙Next 有没有获取当前window是否是全屏状态(沉浸式)的接口的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可以在目标页面的onpageshow里面调用setWindowLayoutFullScreen(true);设置全屏 (需要在entryability里面存windowStage,然后在页面获取windowStage再设置窗口全屏) 然后在目标页面的onPageHide里面调用setWindowLayoutFullScreen(true);设置非全屏就可以了

示例代码

entryability:

 onWindowStageCreate(windowStage: window.WindowStage): void {
 // Main window is created, set main page for this ability
 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

 AppStorage.setOrCreate<window.WindowStage>('window',windowStage)

 windowStage.loadContent('pages/Page8', (err, data) => {
 if (err.code) {
 hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
 return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
});
}


page页面:

import window from '[@ohos](/user/ohos).window'
import router from '[@ohos](/user/ohos).router'

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Page8 {
 [@State](/user/State) message: string = 'Hello World'
 win:window.Window|undefined = AppStorage.get<window.WindowStage>('window')?.getMainWindowSync()

 build() {
   Row() {
     Column() {
       Text(this.message)
         .fontSize(50)
         .fontWeight(FontWeight.Bold)
     }
     .width('100%')
   }
   .height('100%')
   .backgroundColor(Color.Brown)
 }
 onPageShow(){
   this.win?.setWindowLayoutFullScreen(true)
 }
 onPageHide(){
   this.win?.setWindowLayoutFullScreen(false)
 }
}

更多关于HarmonyOS 鸿蒙Next 有没有获取当前window是否是全屏状态(沉浸式)的接口的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS 鸿蒙Next中,可以通过系统提供的API接口来判断当前窗口是否处于全屏(沉浸式)状态。具体来说,可以使用AbilityWindow或相关窗口管理类中的方法来检查当前窗口的状态。

鸿蒙系统提供了窗口管理相关的API,通常这些API位于系统框架层,允许开发者查询窗口的当前属性,包括是否全屏。例如,可以调用类似isFullScreenMode()的方法(具体方法名可能有所不同,需参考实际API文档)来检查当前窗口是否处于全屏模式。

示例代码(伪代码,具体实现需参考API文档):

// 假设存在一个Window管理类实例windowManager
bool isFullScreen = windowManager.isFullScreenMode();

// isFullScreen为true表示当前窗口处于全屏状态,false表示非全屏状态

请注意,由于鸿蒙系统的API可能会随着版本更新而有所变化,因此建议查阅最新的官方API文档或开发者指南以获取准确的信息。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部