参考demo:import web_webview from '@ohos.web.webview' import mediaquery from '@ohos.mediaquery'; import window from '@ohos.window'; import common from '@ohos.app.ability.common'; @Entry @Component struct MediaQueryExample { @State color: string = '#DB7093'; @State text: string = 'Portrait'; @State portraitFunc:mediaquery.MediaQueryResult|void|null = null; handler: FullScreenExitHandler | null = null // 当设备横屏时条件成立 listener:mediaquery.MediaQueryListener = mediaquery.matchMediaSync('(orientation: landscape)'); controller: web_webview.WebviewController = new web_webview.WebviewController() onPortrait(mediaQueryResult:mediaquery.MediaQueryResult) { if (mediaQueryResult.matches as boolean) { // 若设备为横屏状态,更改相应的页面布局 this.color = '#FFD700'; this.text = 'Landscape'; } else { this.color = '#DB7093'; this.text = 'Portrait'; } } aboutToAppear() { // 绑定当前应用实例 // 绑定回调函数 this.listener.on('change', (mediaQueryResult:mediaquery.MediaQueryResult) => { this.onPortrait(mediaQueryResult) }); } // 改变设备横竖屏状态函数 private changeOrientation(isLandscape: boolean) { // 获取UIAbility实例的上下文信息 let context:common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // 调用该接口手动改变设备横竖屏状态 window.getLastWindow(context).then((lastWindow) => { lastWindow.setPreferredOrientation(isLandscape ? window.Orientation.LANDSCAPE : window.Orientation.PORTRAIT) }); } build() { Column() { Web({ src: '', controller: this.controller }) .javaScriptAccess(true) .domStorageAccess(true) .onFullScreenEnter((event) => { console.log("onFullScreenEnter...") this.handler = event.handler this.changeOrientation(true); }) .onFullScreenExit(() => { console.log("onFullScreenExit...") if (this.handler) { this.handler.exitFullScreen() this.changeOrientation(false); } }) } .width('100%').height('100%') } }
参考demo: