HarmonyOS 鸿蒙Next如何获取折叠屏状态?

HarmonyOS 鸿蒙Next如何获取折叠屏状态?

请问 如何获取折叠屏状态

4 回复
折叠模式变更取屏幕宽高的场景下,应该监听foldDisplayModeChange,再用display.getDefaultDisplaySync()去取宽高
接口参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-display-V5#displayonfolddisplaymodechange10
foldstatus监听,就是通知折叠状态变化,折叠开合过程中超过半折态的阈值就会更新foldstatus,折叠开合改变了foldstatus以后还要去通知屏幕发生变化,更新屏幕数据,foldstatus的状态变化没有问题,屏幕处理折叠开合事件以后更新屏幕宽高,更新折叠屏显示模式;
display.on(foldstatus)通知的是foldstatus的变化,这个时候去查foldstatus是实时更新的,折叠开合流程还没结束,读到的属性是旧值没有意义
display.on(change)监听屏幕属性的变化,这个监听也是屏幕属性更新完触发,但这个不区分什么原因导致的屏幕属性变化
display.on(folddisplaymode)监听屏幕显示模式变化,是折叠开合显示模式切换过来以后再收到通知,收到这个回调去读屏幕属性是折叠开合流程结束的数据

更多关于HarmonyOS 鸿蒙Next如何获取折叠屏状态?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以使用display的开合能力来满足开合场景下不同需求。常见display API如下:

cke_330.png

需要注意的是,若需要获取折叠屏的状态变化后,屏幕的宽高等信息,需要使用display.on('foldDisplayModeChange')接口进行监听。如果使用display.on('foldStatusChange')监听,将出现因接口调用时序问题导致的获取宽高错误问题。示例代码如下:

display.on('foldDisplayModeChange', (data: display.FoldDisplayMode) => {

  let displayInfo: display.Display = display.getDefaultDisplaySync();

  if (data === display.FoldDisplayMode.FOLD_DISPLAY_MODE_FULL) {

    console.info('当前屏幕状态:全屏显示');

    console.info('屏幕宽度: ' + displayInfo.width);

    console.info('屏幕高度: ' + displayInfo.height);

  } else if (data === display.FoldDisplayMode.FOLD_DISPLAY_MODE_MAIN) {

    console.info('当前屏幕状态:主屏幕显示');

    console.info('屏幕宽度: ' + displayInfo.width);

    console.info('屏幕高度: ' + displayInfo.height);

  }

});

详细请参考API文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-display-V5#displaygetfoldstatus10

在HarmonyOS鸿蒙Next系统中,获取折叠屏状态的方法主要通过使用系统提供的API接口来实现。具体步骤如下:

首先,需要导入ArkUI框架中的display模块,该模块提供了折叠屏状态查询的相关接口。然后,可以通过调用display.getFoldStatus()方法来获取当前的折叠屏状态,该方法会返回一个枚举值,表示设备当前的折叠状态,如展开、折叠或悬停等。

此外,为了实时获取折叠屏状态的变化,可以使用display.on('foldStatusChange', callback)方法来绑定一个回调函数。当折叠屏状态发生变化时,系统会触发该回调,并将新的折叠状态作为参数传递给回调函数,从而可以在回调函数中更新应用界面或执行其他相关操作。

以上方法适用于HarmonyOS鸿蒙Next系统的折叠屏设备开发

鸿蒙Next教程已发布,可以先学学https://www.itying.com/category-93-b0.html

回到顶部