鸿蒙Next如何判断当前是否处于全屏状态

在鸿蒙Next开发中,如何通过代码判断当前应用是否处于全屏显示状态?有没有相关的API或回调方法可以监听全屏状态变化?

2 回复

鸿蒙Next里判断全屏?简单!用WindowgetAttributes()检查flags,看看有没有FLAG_FULLSCREEN。有就是全屏,没有就不是。代码两行搞定,比判断女朋友是否生气容易多了!

更多关于鸿蒙Next如何判断当前是否处于全屏状态的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,判断当前是否处于全屏状态可以通过以下方式实现:

方法一:使用 WindowisFullScreen 方法

通过获取当前窗口并检查其全屏状态属性来判断。

import window from '@ohos.window';

// 获取当前窗口
let windowClass: window.Window;
window.getLastWindow(this.context, (err, data) => {
  if (err) {
    console.error('Failed to get the window. Code: ' + JSON.stringify(err));
    return;
  }
  windowClass = data;
  
  // 判断是否全屏
  let isFullScreen = windowClass.isFullScreen;
  console.log(`Current full screen status: ${isFullScreen}`);
});

方法二:监听窗口状态变化

通过注册窗口状态变化事件来动态获取全屏状态。

import window from '@ohos.window';

let windowClass: window.Window;
window.getLastWindow(this.context, (err, data) => {
  if (err) {
    console.error('Failed to get the window. Code: ' + JSON.stringify(err));
    return;
  }
  windowClass = data;

  // 注册窗口状态变化事件
  windowClass.on('windowSizeChange', (state) => {
    let isFullScreen = windowClass.isFullScreen;
    console.log(`Full screen status changed: ${isFullScreen}`);
  });
});

注意事项:

  1. 权限要求:需在 module.json5 中申请 ohos.permission.SYSTEM_FLOAT_WINDOW 权限(若涉及悬浮窗操作)。
  2. 上下文对象this.context 需替换为有效的 UIAbility 上下文。
  3. 生命周期管理:监听事件需在组件销毁时取消注册,避免内存泄漏。

以上方法适用于应用内窗口的全屏状态判断,若涉及系统全局状态需结合其他 API 实现。

回到顶部