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

【鸿蒙性能优化】横竖屏切换开发实践 实现视频播窗页面的横竖屏转换,用户可以切换到全屏播放场景。横竖屏切换示意以进入全屏为例,开发过程需要有以下关注点:1、如果有模态框,需要关闭模态框2、页面实现窗口旋转和全屏逻辑3、隐藏播控相关按钮内容进入横屏基本流程在触发旋转的按钮上,触发对应事件,并可以采用EventHub.emit发送对应事件触发相应事件。这里主要介绍进入全屏的逻辑。 阅读详情

概述

横竖屏切换是一种常见的功能,用户在一些场景下,需要在横屏状态浏览应用,例如在进行视频播放的场景,一些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 obtain the top window. Cause: ' + JSON.stringify(err));
    });

鸿蒙NEXT开发【横竖屏开发实践】应用框架开发 横竖屏切换功能即实现应用内既支持竖屏显示也支持横屏显示的效果。对于应用内不同页面显示方向不同的情况,需要在应用逻辑中,动态修改窗口方向,来实现该效果,例如包含视频播放功能的应用,首页内容是采用竖屏方式,而视频详情页则采用横屏方式展示。 阅读详情

相关推荐

鸿蒙HarmonyOS 设置横屏竖屏模式

系统能力: SystemCapability.WindowManager.WindowManager.Core。跟随传感器自动旋转,可以旋转到竖屏、横屏、反向竖屏、反向横屏四个方向,且受控制中心的旋转开关控制。元服务API: 从API version 12开始,该接口支持在元服务中使用。在项目 module.json5 的 abilities 中,添加配置代码。参考官方文档查看窗口显示方向类型枚举。

鸿蒙老马的专栏 2374

鸿蒙HarmonyOS (开发进阶)横竖屏开发实践

目前在HarmonyOS系统中,窗口的旋转形态包括以下四种,窗口的状态对应真机实际状态如下:

WEZC156465的博客 1858

鸿蒙(HarmonyOS)实战开发篇——横竖屏切换开发实践

执行进入全屏时首先需要通过display获取当前的显示方向,并根据当前显示方向,执行对应的屏幕旋转逻辑。

lc748258的博客 1771

鸿蒙原生APP开发之横竖屏开发实践

横竖屏切换功能即实现应用内既支持竖屏显示也支持横屏显示的效果。对于应用内不同页面显示方向不同的情况,需要在应用逻辑中,动态修改窗口方向,来实现该效果,例如包含视频播放功能的应用,首页内容是采用竖屏方式,而视频详情页则采用横屏方式展示。窗口旋转策略的选择常用应用类型的横竖屏开发常见的横竖屏开发问题。

CTrup的博客 1446

鸿蒙(HarmonyOS)实战开发篇——基于原生能力的横竖屏旋转适配

我们如何通过传感器自己感知方向,自己设置旋转;(使用sensor感知设备是不关心设备是否启用系统自带的旋转锁定)

lc748258的博客 1478

鸿蒙5.0开发进阶:视频横竖屏切换及进度条热区拖动

该场景多用于横竖屏视频等媒体播放。

HSMMQAQ的博客 4146

【鸿蒙实战开发】基于原生能力的横竖屏旋转适配

我们如何通过传感器自己感知方向,自己设置旋转;(使用sensor感知设备是不关心设备是否启用系统自带的旋转锁定):在一个应用内,不同的页面有不同的旋转策略;如:首页仅竖屏,详情页面允许横竖屏切换;

HarmonyOSMN的博客 1576

【HarmonyOS 鸿蒙实战开发】视频横竖屏切换及进度条热区拖动案例

本示例介绍了 @ohos.multimedia.media 组件和 @ohos.window 接口以及使用 触摸热区 实现视频横竖屏切换及进度条热区拖动的功能。该场景多用于横竖屏视频等媒体播放。

CTrup的博客 810

从入门到精通:鸿蒙 HarmonyOS 应用开发指南

HarmonyOS是华为开发的一款面向未来的操作系统,旨在通过微内核架构和分布式技术,打破设备之间的壁垒,实现跨设备协同。分布式架构:设备之间的资源共享,打破单一设备限制。微内核设计:提高操作系统的安全性和可靠性。跨设备开发:支持不同设备,如手机、智能手表、智能家居等。开发工具:提供DevEco Studio等开发工具,极大提高开发效率。本文从开发环境搭建到高级技术应用,全面介绍了如何进行HarmonyOS应用开发。

小蜗牛的珍贵百宝箱 2355

STM32F407 BootLoader实战:从零搭建到OTA升级(附完整源码)

本文详细介绍了为STM32F407微控制器从零搭建BootLoader并实现稳定OTA升级的完整实战指南。内容涵盖Flash分区规划、链接脚本配置、核心跳转逻辑、中断向量表重定向、可靠的升级流程设计,并深入探讨了双备份与回滚机制以提升工业级可靠性。文章提供了可直接使用的代码框架,并分享了关键调试技巧,帮助开发者快速掌握STM32远程固件更新技术。

weixin_29192211的博客 444

手把手教你配置UEFI Secure Boot:从密钥生成到系统验证(附避坑指南)

本文详细介绍了如何配置UEFI Secure Boot,从密钥生成到系统验证的全过程,包括PK、KEK等关键密钥的生成方法,以及常见问题的解决方案。通过实战案例和避坑指南,帮助用户有效提升系统启动安全性,防止恶意软件植入。

weixin_30776273的博客 343

【WRF-Chem教程第四期上】运行 WRF-Chem 模型

完整介绍运行 WRF-Chem 模型的详细步骤

WW、forever的博客 3114

ArcGIS:景观指数和景观单元关联生成景观指数遥感图像

优快云@_养乐多_本文将记录,使用由 Fragstats V4.2 软件计算的景观指数和瓦片 tif 数据生成景观指数图像的操作步骤。本教程的操作均在ArcGIS上进行,最后生成一个研究区内指定景观单元大小的景观指数图像。结果如下所示,

养乐多的博客 4932

Windows Docker + RK3588 部署 YOLO26-Pose 人体姿态检测

YOLO26-Pose 在 RK3588 上的部署流程是 Windows Docker 容器内 ONNX 导出 → RKNN 转换(INT8 量化)→ ADB 推送 → 板端 C++ 推理。YOLO26n-Pose 在 640 输入下全链路约 55 FPS,可以覆盖实时姿态检测需求。先在板端用单张图片验证关键点输出正确性,确认 C++ 后处理的解析逻辑无误后,再切换到摄像头实时推理。

m0_64661770的博客 98

【Bug已解决】Request timed out / API Timeout — Claude Code 请求超时解决方案

方案适用场景推荐指数难度方案一:增加超时大任务处理⭐⭐⭐⭐⭐低方案二:切换 SonnetOpus 太慢⭐⭐⭐⭐⭐低方案三:缩小范围大代码库⭐⭐⭐⭐⭐低方案四:优化网络网络延迟高⭐⭐⭐⭐中方案五:减少 MCPMCP 超时⭐⭐⭐中方案六:流式响应长生成任务⭐⭐⭐低根本原因:请求超时最常见原因是请求体过大(35%)和 Opus 模型推理慢(25%),默认 60 秒超时阈值对大型任务不够最佳实践。

一键难忘的博客 5162

司法AI系统的架构设计:法律知识图谱如何辅助智能庭审?架构师亲测

简单来说,法律知识图谱是一种采用图数据结构(节点Node + 边Edge/关系Relation)来组织和表达法律领域知识的语义网络。它以。

AI 算法实战派 1088

RT-DETR算法优化改进:Backbone改进 | HGBlock完美结合PPHGNetV2 GhostConv

GhostConv助力RT-DETR ,HGBlock与PPHGNetV2 GhostConv完美结合

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 2911

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: HarmonyOS开发实战指南:鸿蒙应用组件化-Hybrid
下一篇: HarmonyOS开发实战指南:ArkTS/JS应用“实时/动态预览规范”
普通网友
博客等级 码龄5年 2986粉丝 200原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值