HarmonyOS开发实战指南:横竖屏开发实践

概述

横竖屏切换是一种常见的功能,用户在一些场景下,需要在横屏状态浏览应用,例如在进行视频播放的场景,一些16:9的视频在横向播放时,全屏的体验更加。所以应用需要支持切换到横屏全屏的能力。在开发时,部分应用需要提供全屏按钮,让用户选择开启横竖屏播放,另外我们也需要考虑系统是否开启了方向锁定,在方向锁定的情况下,用户只能通过手动横屏来实现全屏,而在方向没有锁定下,用户将设备横向的情况下,应用需要自动切换到横屏进行播放。

本文中将介绍如何进行横竖屏功能的开发,以及横竖屏开发中常见的问题及其优化方案。

横竖屏开发流程

为了实现应用的横竖屏功能,我们需要从以下技术方面进行考虑:

1、设置界面的旋转策略

2、监听屏幕的窗口变化

3、根据方向进行布局适配

设置界面的旋转策略

1、配置应用默认选择方式

初次进入应用时的旋转策略可以通过module.json5文件中对应Ability的"orientation"字段进行配置,此字段控制的是应用打开后的旋转方式,

{
  "module": {
    ...
    ,
    "abilities": [
      {
        "name": "EntryAbility",
        ...,
        "orientation":"auto_rotation"  // 需要配置为相应的旋转策略
      }
    ]
  }
}

其支持的参数可以参考module.json5配置项其中orientation字段相关配置

根据应用默认的旋转行为进行相应的配置:

  • 如果应用是竖屏应用,建议配置portrait为默认旋转策略。
  • 如果应用是横屏应用,建议配置landscape为默认旋转策略。
  • 如果应用为可旋转应用,建议应用配置auto_rotation_restricted为默认旋转策略。
  • 如果一个应用,在直板机和折叠机折叠态是竖屏应用,在平板和折叠机展开态默认是可旋转应用,推荐配置follow_desktop为默认旋转策略。

以如下备忘录为例,在系统关闭了旋转锁定后,应用的页面都会随着手机旋转而发生展示上的切换,此时就需要配置为auto_rotation_restricted。

图1 应用随系统旋转切换横竖屏

2、支持手动设置旋转

部分应用的旋转策略可能在不同页面是不同的,例如视频播放页面支持横屏,但是首页的内容是支持仅竖屏的,那么就需要针对单独的页面,采用window窗口提供的设置窗口方向的能力,可以将窗口显示的方向修改为横屏、竖屏、反向横屏、反向竖屏的状态。在HarmonyOS系统中,窗口的状态对应真机实际状态如下:

图2 窗口形态示意图

在使用时,需根据应用自身的旋转策略选择相应的参数,可以封装如下方法,进行旋转策略的设置,方法中通过window.getLastWindow拿到窗口实例,然后调用window实例的setPreferredOrientation设置旋转策略。

 
  setOrientation(orientation: number) {
    window.getLastWindow(getContext(this)).then((win) => {
      win.setPreferredOrientation(orientation).then((data) => {
        console.log('setWindowOrientation: ' + orientation + ' Succeeded. Data: ' + JSON.stringify(data));
      }).catch((err: string) => {
        console.log('setWindowOrientation: Failed. Cause: ' + JSON.stringify(err));
      });
    }).catch((err: string) => {
      console.log('setWindowOrientation: Failed to o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值