在鸿蒙Next(HarmonyOS NEXT)中,判断当前是否处于全屏状态可以通过以下方式实现:
方法一:使用 Window 的 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;
// 判断是否全屏
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}`);
});
});
注意事项:
- 权限要求:需在
module.json5 中申请 ohos.permission.SYSTEM_FLOAT_WINDOW 权限(若涉及悬浮窗操作)。
- 上下文对象:
this.context 需替换为有效的 UIAbility 上下文。
- 生命周期管理:监听事件需在组件销毁时取消注册,避免内存泄漏。
以上方法适用于应用内窗口的全屏状态判断,若涉及系统全局状态需结合其他 API 实现。