如何获取当前设备的宽度?
我现在在做一次开发多端部署的相关内容,但是例如gridrow里面的breakpoint断点只能在这个组件里使用,无法作为条件语句进行判断。有没有什么参数,能直接获取当前设备的宽度?这样就能根据这个宽度判断是大设备还是小设备了。
UI框架
赞
收藏 0
回答 1
待解决
相关问题
如何获取当前设备的设备名称
524浏览 • 1回复 待解决
设备连接Wi-Fi后,如何获取当前设备的IP地址
777浏览 • 1回复 待解决
鸿蒙os开放如何获取当前设备ip地址?
2949浏览 • 1回复 待解决
请问如何获取窗口的宽度
715浏览 • 1回复 待解决
如何获取主窗口window的宽度
719浏览 • 1回复 待解决
求大佬告知如何获取窗口的宽度
599浏览 • 1回复 待解决
如何获取Text组件中文字的宽度
605浏览 • 1回复 待解决
如何获取文本框里的文字宽度
942浏览 • 1回复 待解决
如何获取当前HAP的BundleName
656浏览 • 1回复 待解决
如何获取当前HAP的包名
939浏览 • 1回复 待解决
如何校验当前设备是手机还是平板
6585浏览 • 1回复 已解决
鸿蒙如何获取与设备绑定的设备ID?
547浏览 • 1回复 待解决
如何获取设备的CPU信息
674浏览 • 1回复 待解决
eTS页面中,如何获取组件的宽度和高度?
2712浏览 • 1回复 待解决
ArkUI中如何获取当前UI控件的信息
629浏览 • 1回复 待解决
鸿蒙OS如何获取当前的手机号
22192浏览 • 1回复 待解决
如何获取设备相关信息
578浏览 • 1回复 待解决
如何获取设备唯一标识?
501浏览 • 1回复 待解决
有没有接口能获取到组件的宽度
337浏览 • 1回复 待解决
判断当前设备是手机还是平板
4702浏览 • 1回复 待解决
录音时如何获取 当前输入的音量大小
4215浏览 • 1回复 待解决
求大佬告知如何获取设备的dpi值
555浏览 • 1回复 待解决
NEXT版本中如何获取设备的网络状态
550浏览 • 1回复 待解决
ArkTS如何获取组网内远程设备的信息?
1682浏览 • 1回复 待解决
如何获取设备横竖屏的状态变化通知
621浏览 • 1回复 待解决
在UIAbility中获取并存储为全局变量,然后在页面中获取全局变量。
1.在UIAbility的onWindowStageCreate生命周期回调中,通过窗口对象获取启动时的应用窗口宽度并注册回调函数监听窗口尺寸变化。将窗口尺寸的长度单位由px换算为vp后,即可基于前文中介绍的规则得到当前断点值,此时可以使用状态变量记录当前的断点值方便后续使用。
// MainAbility.ts
import window from '@ohos.window'
import display from '@ohos.display'
import UIAbility from '@ohos.app.ability.UIAbility'
export default class MainAbility extends UIAbility {
private windowObj?: window.Window
private curBp: string = ''
//...
// 根据当前窗口尺寸更新断点
private updateBreakpoint(windowWidth: number) :void{
// 将长度的单位由px换算为vp
let windowWidthVp = windowWidth / display.getDefaultDisplaySync().densityPixels
let newBp: string = ''
if (windowWidthVp < 320) {
newBp = 'xs'
} else if (windowWidthVp < 600) {
newBp = 'sm'
} else if (windowWidthVp < 840) {
newBp = 'md'
} else {
newBp = 'lg'
}
if (this.curBp !== newBp) {
this.curBp = newBp
// 使用状态变量记录当前断点值
AppStorage.setOrCreate('currentBreakpoint', this.curBp)
}
}
onWindowStageCreate(windowStage: window.WindowStage) :void{
windowStage.getMainWindow().then((windowObj) => {
this.windowObj = windowObj
// 获取应用启动时的窗口尺寸
this.updateBreakpoint(windowObj.getWindowProperties().windowRect.width)
// 注册回调函数,监听窗口尺寸变化
windowObj.on('windowSizeChange', (windowSize)=>{
this.updateBreakpoint(windowSize.width)
})
});
// ...
}
//...
}
2.在页面中,获取及使用当前的断点。
@Entry
@Component
struct Index {
@StorageProp('currentBreakpoint') curBp: string = 'sm'
build() {
Flex({justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center}) {
Text(this.curBp).fontSize(50).fontWeight(FontWeight.Medium)
}
.width('100%')
.height('100%')
}
}