HarmonyOS 鸿蒙Next 某些页面设置横竖屏

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 某些页面设置横竖屏 页面A竖屏,点击按钮进入页面B要横屏,返回页面A要恢复竖屏,怎么实现?

4 回复

为您提供如下demo:

  1. 首先打开entry下面的module.json5文件,在abilities节点下添加一个orientation的属性:

    "orientation": 'unspecified'
    
  2. 第一个页面:

    import { router } from '[@kit](/user/kit).ArkUI';
    [@Entry](/user/Entry)
    [@Component](/user/Component)
    struct aboutScreen1 {
      @State message: string = '';
    
      build() {
        Column() {
          Text('首页,点我跳转')
            .fontSize(30)
            .textAlign(TextAlign.Center)
            .width('100%')
            .fontWeight(500)
            .height('100%')
            .onClick(() => {
              router.pushUrl({url: "pages/aboutScreen2" })
            })
        }
        .justifyContent(FlexAlign.Center)
        .width('100%')
        .backgroundColor(Color.White)
        .height('100%')
      }
    }
    
  3. 第二个页面:

    import { router, window } from '[@kit](/user/kit).ArkUI';
    import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';
    
    [@Entry](/user/Entry)
    [@Component](/user/Component)
    struct aboutScreen1 {
      @State message: string = '';
    
      aboutToAppear(): void {
        let orientation = window.Orientation.LANDSCAPE
        this.setScreenOrientation(orientation)
      }
    
      aboutToDisappear(): void {
        let orientation = window.Orientation.PORTRAIT
        this.setScreenOrientation(orientation)
      }
    
      setScreenOrientation(orientation: window.Orientation) {
        let windowClass: window.Window | undefined = undefined;
        try{
          let promise = window.getLastWindow(getContext())
          promise.then((data) => {
            windowClass = data
            windowClass.setPreferredOrientation(orientation)
          }).catch((err: BusinessError) => {
            console.error('getLastWindow error')
          })
        } catch (e) {
          console.error('setScreenOrientation error')
        }
      }
    
      build() {
        Column() {
          Text('我横屏啦')
            .fontSize(30)
            .textAlign(TextAlign.Center)
            .width('100%')
            .fontWeight(500)
            .height('50%')
        }
        .justifyContent(FlexAlign.Center)
        .width('100%')
        .backgroundColor(Color.White)
        .height('100%')
      }
    }
    

更多关于HarmonyOS 鸿蒙Next 某些页面设置横竖屏的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我也试过这么做,但是页面B返回页面A时不是立刻恢复竖屏,而是停顿一下然后横屏旋转成竖屏,这个旋转时间比页面A进入页面B旋转为横屏的时间长,有什么办法缩短旋转时间,

由于在窗口旋转时,屏幕的尺寸会发生变化,界面会发生重新布局,为了提高横竖屏切换时的流畅度,需要进行相应的性能优化。

参考:https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-landscape-and-portrait-development-V5#section1189243111172

针对帖子标题“HarmonyOS 鸿蒙Next 某些页面设置横竖屏”的问题,以下是专业且简洁的回答:

在HarmonyOS鸿蒙Next系统中,为特定页面设置横竖屏显示,通常涉及到应用层面的屏幕方向管理。这可以通过修改应用的配置文件或在代码中动态设置来实现。

  1. 配置文件设置:检查应用的config.json或其他相关配置文件,看是否有关于屏幕方向的设置项。如果存在,可以根据需求将其设置为横屏、竖屏或自适应。

  2. 代码动态设置:在应用代码中,特别是在页面加载或显示时,可以通过调用系统提供的API来设置屏幕方向。这通常涉及到访问窗口管理器或显示设置的相关接口。

  3. 注意事项:在设置屏幕方向时,需确保该操作符合用户的使用习惯和系统的UI/UX规范。此外,不同版本的HarmonyOS可能有所差异,因此建议查阅最新的官方文档以获取最准确的信息。

如果以上方法无法解决问题,可能是由于应用的其他部分或系统本身的限制导致。此时,建议仔细检查应用的代码和配置文件,或尝试在不同的设备或系统版本上测试。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,

回到顶部