HarmonyOS 鸿蒙Next中有什么好的办法去监听折叠屏内外屏切换时的屏幕尺寸变化?
HarmonyOS 鸿蒙Next中有什么好的办法去监听折叠屏内外屏切换时的屏幕尺寸变化?
目前有一个动画这边需要做折叠屏适配(目前二折叠、三折叠OK),阔折叠这块的话在UI里面如何去监听当前的内外屏切换代来的屏幕尺寸变化呢??
我原来用的是如下的代码段:
// 宽屏适配屏幕长度和高度
@State
text_height: number = this.screen_height = px2vp(display.getDefaultDisplaySync().height)
@State
text_width: number = this.screen_width = px2vp(display.getDefaultDisplaySync().width)
.onAppear(()=>{
display.on("change",()=>{
this.text_height = this.viewModel.displayHeight = px2vp(display.getDefaultDisplaySync().height)
this.text_width = this.viewModel.displayWidth = px2vp(display.getDefaultDisplaySync().width)
logger.print('SliderControl','检测到屏幕尺寸变化')
})
})
我自己在阔折叠模拟器上调试看日志,并无看到“检测到屏幕尺寸变化”日志输出,貌似这个display.on监听不到这个阔折叠,望大佬给一个好一点的解答,谢谢。
更多关于HarmonyOS 鸿蒙Next中有什么好的办法去监听折叠屏内外屏切换时的屏幕尺寸变化?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
您好,Pura X折叠屏设备在开合状态变化时,窗口高度会相应改变,应用界面需要实时响应这些变化。开发者可以通过注册on(‘windowSizeChange’)事件监听器来捕获窗口尺寸变化,在回调函数中重新计算当前断点并更新UI布局,确保界面始终与当前窗口尺寸保持同步。这一机制能够有效处理设备展开/折叠、分屏模式切换以及屏幕旋转等多种场景下的界面适配需求,为用户提供流畅的折叠屏使用体验。
更多关于HarmonyOS 鸿蒙Next中有什么好的办法去监听折叠屏内外屏切换时的屏幕尺寸变化?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next中监听折叠屏切换,可使用display
模块的on('displayChange')
事件。具体步骤:
- 导入
@ohos.display
模块 - 注册显示设备变化监听:
display.on('displayChange', (curDisplay) => {
// curDisplay.width/height包含新尺寸
})
- 在回调中获取当前
Display
对象的宽高属性。该方法直接响应包括折叠屏展开/折叠在内的所有显示变化事件。
在HarmonyOS Next中监听折叠屏内外屏切换,建议使用window
模块的on('windowSizeChange')
事件。这种方式比display.on('change')
更适合处理折叠屏场景变化。
推荐实现方式:
import window from '@ohos.window';
// 获取窗口对象
let win = window.getLastWindow(this.context);
// 监听窗口尺寸变化
win.on('windowSizeChange', (data) => {
this.text_height = px2vp(data.height);
this.text_width = px2vp(data.width);
logger.print('SliderControl','检测到窗口尺寸变化');
});
关键点说明:
windowSizeChange
事件会在折叠/展开操作时触发- 回调参数data包含width/height等属性
- 需要先通过getLastWindow获取当前窗口对象
这种方式可以准确捕获折叠屏状态变化时的尺寸调整事件。