HarmonyOS 鸿蒙Next如何区分平板的自由多窗和普通悬浮窗模式?
HarmonyOS 鸿蒙Next如何区分平板的自由多窗和普通悬浮窗模式? 是否有API或其他方式能区分使用平板的自由多窗或悬浮窗模式,通过API window.getWindowStatus获取到的窗口类型都是悬浮窗类型,无法准确区分用户是否开启自由多窗。
使用avoidArea获取状态栏高度,在自由多窗为0,而悬浮窗模式高度不确定,导致不断窗口类型切换,样式会错乱,是否可以准确区分自由多窗或普通悬浮窗模式
2 回复
参考如下代码:
let taskContext = GlobalContext.getContext().getObject(CommonConstants.taskContext) as common.UIAbilityContext;
settings.getValue(taskContext, 'window_pcmode_switch_status', settings.domainName.USER_PROPERTY, (err, value) => {
if (err) {
Log.showError(TAG, 'get settings value failed! ' + JSON.stringify(err));
return;
}
Log.showInfo(TAG, 'IS_FREE_WINDOW_ENABLE value is ' + value);
});
//监听:
let taskContext = GlobalContext.getContext().getObject(CommonConstants.taskContext) as common.UIAbilityContext;
let res: boolean = settings.registerKeyObserver(taskContext, 'window_pcmode_switch_status', settings.domainName.USER_PROPERTY, () => { // 'IS_FREE_WINDOW_ENABLE'
settings.getValue(taskContext, 'window_pcmode_switch_status', settings.domainName.USER_PROPERTY, (err, value) => {
if (err) {
Log.showError(TAG, 'get settings value failed! ' + JSON.stringify(err));
return;
}
Log.showInfo(TAG, 'window_pcmode_switch_status value is ' + value);
});
});
Log.showInfo(TAG, `registerKeyObserver result -> ${res}`);
以上是初步分析结论,如有疑问可以展开回复,看到后会继续协助定位阻碍点。
开源网站上收录了UI、系统接口、Web、创新特性等场景化鸿蒙示例DEMO,开发中可以参考: https://gitee.com/scenario-samples/demo-index
更多关于HarmonyOS 鸿蒙Next如何区分平板的自由多窗和普通悬浮窗模式?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)Next系统中,区分平板的自由多窗和普通悬浮窗模式,可以通过以下几个方面进行辨别:
-
窗口大小与位置调整:
- 自由多窗模式:允许用户在同一屏幕上同时打开并自由调整多个应用窗口的大小和位置。这些窗口可以相互独立操作,实现多任务并行处理。用户可以通过拖动窗口边缘或角落来调整其尺寸。
- 普通悬浮窗模式:通常表现为一个小窗口悬浮在当前应用界面之上,其大小和位置相对固定,用户无法像自由多窗那样随意调整窗口大小或位置。
-
操作方式与交互:
- 自由多窗:支持更复杂的窗口间交互,如拖动文件或内容在不同窗口间传递。
- 普通悬浮窗:通常仅用于显示特定信息或提供便捷操作,如快速回复消息、查看天气等,交互相对简单。
-
应用场景:
- 自由多窗:更适合需要同时处理多个任务的场景,如边看视频边做笔记。
- 普通悬浮窗:常用于需要快速访问或查看某些信息的场景,如悬浮时钟、悬浮播放器等。
综上所述,通过窗口大小与位置的调整自由度、操作方式与交互的复杂性以及应用场景的不同,用户可以轻松区分鸿蒙Next系统中的平板自由多窗和普通悬浮窗模式。如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html 。