如何获取设备屏幕横竖屏状态

2024-12-18 16:00:17
181次阅读
0个评论

方法一:通过媒体查询

import { mediaquery } from '@kit.ArkUI'; 
 
let listener = mediaquery.matchMediaSync('(orientation: landscape)'); //监听横屏事件 
function onPortrait(mediaQueryResult: mediaquery.MediaQueryResult) { 
  console.info('mediaQueryResult.matches:' + mediaQueryResult.matches) 
  if (mediaQueryResult.matches) { 
    // do something here 
  } else { 
    // do something here 
  } 
} 
listener.on('change', onPortrait) // 注册回调 
listener.off('change', onPortrait) // 取消注册回调 
 
@Entry 
@Component 
struct Index { 
  build() { 
    Column() { 
      Column() { 
        Text('test') 
      } 
      .width('100%') 
    } 
    .height('100%') 
    .width('100%') 
    .justifyContent(FlexAlign.End) 
  } 
}

方法二:

import { display, window } from '@kit.ArkUI'; 
 
@Entry 
@Component 
struct windowRotation { 
  build() { 
    Text("Scroll Area") 
      .width("100%") 
      .height("100%") 
      .backgroundColor(0X330000FF) 
      .fontSize(16) 
      .textAlign(TextAlign.Center) 
      .onClick(() => { 
        window.getLastWindow(getContext(this), (err, win) => { 
          let cutOutInfo = win.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM_GESTURE) 
          console.log(JSON.stringify(cutOutInfo)) 
          if (window.Orientation.AUTO_ROTATION) { 
            let rotation: number = display.getDefaultDisplaySync().orientation // 获取当前屏幕的枚举值 
            console.log('' + rotation); 
            if (rotation == 0) { 
              console.log("CutOutInfo 竖屏数据: " + JSON.stringify(cutOutInfo)); 
            } else if (rotation == 1) { 
              console.log("CutOutInfo 横屏数据: " + JSON.stringify(cutOutInfo)); 
            } else if (rotation == 2) { 
              console.log("CutOutInfo 反向竖屏数据: " + JSON.stringify(cutOutInfo)); 
            } else { 
              console.log("CutOutInfo 反向横屏数据: " + JSON.stringify(cutOutInfo)); 
            } 
          } 
        }) 
      }) 
  }}
收藏00

登录 后评论。没有帐号? 注册 一个。