OpenHarmony 4.0 Release横屏配置

OpenHarmony如何切换横竖屏? 在日常开发中,大多APP可能根据实际情况直接将APP的界面方向固定,或竖屏或横屏。但在使用过程中,我们还是会遇到横竖屏切换的功能需求,可能是通过物理重力感应触发,也有可能是用户手动触发。所以本文主要带大家了解在OpenAtom OpenHarmony(以下简称“OpenHarmony”)应用开发的过程中,如何在Stage模型和FA模型下使用对应的接口去完成横竖屏的切换。本文中OpenHarmony版本为3.2 Beta4,API版本为9。开发板为DAYU200。 阅读详情

一、前言

OpenHarmony源码默认基于手机类竖屏设备配置,在某些行业或场景,如平板、电视、广告机等常常需要横屏显示,因此需要修改OpenHarmony 默认显示方向,由竖屏改为横屏。

二、环境配置

  • 系统版本: OpenHarmony 4.0 Release (4.0.10.13) 32bit
  • 设备平台:DAYU 200 RK3568

三、系统默认横屏

3.1屏幕方向调试命令

可使用hdc命令修改设备/system/etc/window/resources/display_manager_config.xml配置文件buildInDefaultOrientation参数,重启生效:

# 拷贝设备display_manager_config.xml 至本地桌面
hdc shell mount -o remount,rw /;hdc file recv /system/etc/window/resources/display_manager_config.xml  C:\Users\xxx\Desktop\display_manager_config.xml

# 修改buildInDefaultOrientation并保存(默认为0)
<buildInDefaultOrientation>2</buildInDefaultOrientation>

# 拷贝本地display_manager_config.xml 至设备原路径
hdc shell mount -o remount,rw /;hdc file send C:\Users\xxx\Desktop\display_manager_config.xml /system/etc/window/resources/display_manager_config.xml

#重启生效
hdc shell reboot

3.2不同配置值效果

  • 未指定: <buildInDefaultOrientation>0<buildInDefaultOrientation> 表示未指定屏幕方向,使用默认方向,与<buildInDefaultOrientation>1<buildInDefaultOrientation>显示一致
  • 竖屏: <buildInDefaultOrientation>1<buildInDefaultOrientation>
  • 横屏: <buildInDefaultOrientation>2<buildInDefaultOrientation>
  • 竖屏反转: <buildInDefaultOrientation>3<buildInDefaultOrientation>
  • 横屏反转: <buildInDefaultOrientation>4<buildInDefaultOrientation>

3.3 源码修改

rk3568设备/system/etc/window/resources/display_manager_config.xml配置文件在源码中对应
foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml

    <!-- Indicates orientation of the built-in screen -->
    <!-- 0: Orientation::UNSPECIFIED -->
    <!-- 1: Orientation::VERTICAL         2: Orientation::HORIZONTAL-->
    <!-- 3: Orientation::REVERSE_VERTICAL 4: Orientation::REVERSE_HORIZONTAL -->
    <buildInDefaultOrientation>2</buildInDefaultOrientation>

全编后更新系统验证。

细心的你可能发现,Launcher概率性竖屏,并显示异常,但系统设置应用横屏正常。

3.4 横屏异常处理

系统由横屏改为竖屏后,仍有一些未完全适配的问题,如:开机Logo&开机视频仍竖屏、Launcher概率性竖屏异常,输入法UI横屏适配异常、OTA升级UI竖屏显示等。

✍OneMoreThink
修改foundation/window/window_manager/wmserver/src/window_node_container.cpp可模块化编译和验证:
注意:64位系统, libwms.z.so拷贝至/system/lib64/libwms.z.so

#模块化编译libwms.z.so
./build.sh -p rk3568 --build-target libwms

#将生成的libwms.z.so替换设备libwms.z.so
hdc shell mount -o remount,rw /;hdc file send xxx\out\rk3568\window\window_manager\libwms.z.so /system/lib/libwms.z.so
# 重启设备生效
hdc shell reboot

更多OpenHarmony模块编译技巧可参考OpenHarmony模块化编译↩

  • recovery升级界面未横屏显示: 将在后续文章中分享,请关注更新~

四、应用设置屏幕方向

本章节介绍在应用中如何设置屏幕方向

  • 设置应用UI方向
    可在module.json5 abilities配置中添加orientation:
"abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        ...
        "orientation": "auto_rotation",
        "startWindowIcon": "$media:startIcon",
        "startWindowBackground": "$color:start_window_background",
        ...
      }
    ]

参考:module.json5配置文件-abilities标签↩
orientation 标识当前UIAbility组件启动时的方向,支持配置枚举,或启动方向资源索引。
启动方向枚举支持的取值如下:

- unspecified:未指定方向,由系统自动判断显示方向。
- landscape:横屏。
- portrait:竖屏。
- follow_recent:跟随背景窗口的旋转模式。
- landscape_inverted:反向横屏。
- portrait_inverted:反向竖屏。
- auto_rotation:随传感器旋转。
- auto_rotation_landscape:传感器横屏旋转,包括横屏和反向横屏。
- auto_rotation_portrait:传感器竖屏旋转,包括竖屏和反向竖屏。
- auto_rotation_restricted:传感器开关打开,方向可随传感器旋转。
- auto_rotation_landscape_restricted:传感器开关打开,方向可随传感器旋转为横屏, 包括横屏和反向横屏。
- auto_rotation_portrait_restricted:传感器开关打开,方向随可传感器旋转为竖屏, 包括竖屏和反向竖屏。
- locked:传感器开关关闭,方向锁定。
- auto_rotation_unspecified:受开关控制和由系统判定的自动旋转模式。
- follow_desktop:跟随桌面的旋转模式。
 配置启动方向的资源索引时,取值为长度不超过255字节的字符串,配置示例:$string:orientation。
 说明:
 - 从API version 14开始,支持配置启动方向资源索引。	字符串	该标签可缺省,缺省值为unspecified。
  • 设置系统屏幕方向
    使用@ohos.screen setOrientation()接口即可
    let promise: Promise<Array<screen.Screen>> = screen.getAllScreens();
      promise.then((data: Array<screen.Screen>) => {
        this.mScreen = data[0];
        this.mScreenRotation = this.mScreen.orientation
        console.log('Succeeded in getting all screens. Data:' + JSON.stringify(data));
      }).catch((err: BusinessError) => {
        console.log('Failed to get all screens. Cause: ' + JSON.stringify(err));
      });
    
    this.mScreen.setOrientation(this.mScreenRotation, (err: BusinessError) => {
       const errCode: number = err.code;
       if (errCode) {
         console.error('Failed to set the vertical orientation. Code: ' + JSON.stringify(err));
         return;
       }
       console.info('Succeeded in setting the vertical orientation.');
     });
    

请添加图片描述
Demo参考:ScreenDemo

五、总结

Congratulations~✌ 通过本文,你已基本掌握:

  • OpenHarmony系统默认屏幕方向配置
  • OpenHarmony横屏Logo、bootanimation和Launcher显示异常处理
  • OpenHarmony 应用如何配置屏幕方向和设置系统屏幕方向

接下来尝试更多有趣OpenHarmony源码开发创作吧~

了解更多关于OpenHarmony文章↩

OpenHarmony实战开发-如何实现横竖屏切换 横竖屏切换是音视频应用常用的功能,OpenHarmony也提供了相应的能力,可以方便的实现横竖屏切换,本文即为大家介绍如何完成横竖屏切换。 阅读详情

相关推荐

Cocos Creator游戏跨平台部署OpenHarmony全流程实战指南

跨平台游戏开发是现代游戏工程中的重要实践,它允许开发者使用同一套代码库构建适用于多个操作系统和设备的游戏应用,显著提升开发效率并降低维护成本。其核心原理在于通过游戏引擎的抽象层封装底层系统差异,将游戏逻辑与平台特定接口解耦。这项技术的核心价值在于能够快速覆盖新兴硬件生态,最大化内容产品的市场触及面。在万物互联趋势下,新兴的分布式操作系统如OpenHarmony为互动内容提供了全新的应用场景。本文聚焦于将成熟的Cocos Creator游戏引擎与OpenHarmony生态进行深度整合,详细解析从环境配置、工程

weixin_34199405的博客 383

OpenHarmony系统解决方案 - 配置屏幕方向导致开机动画和Launcher显示异常

配置设备默认方向,例如修改为横屏显示,修改文件display_manager_config.xml的buildInDefaultOrientation参数值为2(Orientation::HORIZONTAL),系统启动后开机动画横竖屏切换,Launcher显示异常。

TiZizzz 2269

SpringBoot文件上传实战:MultipartFile重复读取的3种方法(附避坑指南)

本文详细介绍了SpringBoot中处理MultipartFile重复读取的3种实用方法,包括字节数组缓存法、临时文件法和流重置法,并提供了避坑指南和性能优化技巧。特别适合需要多次读取上传文件内容的开发者,帮助解决InputStream流只能读取一次的问题。

weixin_28710999的博客 392

OpenHarmony 实现屏幕横竖屏

OpenHarmony 实现屏幕横竖屏

Abner_Crazy的博客 4286

[捷稀 JCG Q30 Pro 刷机说明] 以刷入openwrt24.10为例

摘要: 本文详细介绍了捷稀JCG Q30 Pro路由器刷入OpenWrt 24.10系统的步骤。通过先刷入OpenWrt 23.05过渡固件,再升级Uboot,最后通过TFTP加载工厂镜像完成刷机。关键步骤包括解锁分区、刷写Uboot、进入恢复模式及配置网络。文章还提供了无线设置、Tailscale内网穿透等进阶命令,并附参考文档和固件下载链接。适用于有一定技术基础的玩家,需注意操作风险,严格按流程执行。

贤时间 7090

windows局域网文件夹共享

windows局域网共享文件夹,亲测,包括可能出现的一些问题解决

yml15180824993的博客 4万+

Openharmony 下载到rk3568实现横屏

Openharmony 下载到rk3568实现横屏

lx3022949056的博客 889

从三个角度理解知识图谱

2012年谷歌首次提出“知识图谱”这个词,由此知识图谱在工业界也出现得越来越多,对于知识图谱以及相关概念的理解确实也是比较绕。自己在研究大数据独角兽Palantir之后开始接触知识图谱,也算对其有了一定了解,这里从三个角度总结一下怎么去理解知识图谱。 几个基本概念:本体、实体、知识库、知识图谱 1、本体是概念的集合,是大家都公认的概念框架,一般不会改变如“人”、“事”、“物”、 “地”、“组...

JavaChaoCo的博客 6893

OpenHarmony关于修改系统横屏导致启动视频显示不全问题解决

OpenHarmony关于修改系统横屏导致启动视频显示不全问题解决

Abner_Crazy的博客 1407

Win 11 Fastboot驱动的详细安装教程

Fastboot驱动的详细安装教程

水w的博客 1万+

el-table通过上下左右键移动光标

在Element Plus的el-table中包含el-input和el-select组件,要实现上下左右键控制光标位置,需要通过focus和blur跟踪判断当前是哪个el-input或el-select有焦点,当按键按下时,通过监听,计算下一个获取焦点元素的索引,通过focus方法将焦点切换至改元素。

秋思的博客 1343

Flutter 3.35.7-ohos 1.0.3 版本发布解读:分栏、横屏全屏与 OpenHarmony 平台能力增强

本指南基于 CPF-Flutter 团队维护的 OpenHarmony 适配版 Flutter SDK 仓库,系统解读 Flutter 3.35.7-ohos 1.0.3 版本(仓库内展示为 `3.35.8-ohos-1.0.3`)的版本配套、新增特性与修复要点。读完本文,你将掌握该版本分栏(Split View)功能从配置文件到框架层导航策略的完整调用链、`supportLandscapeFul

gitblog_00106的博客 169

用FPGA在HDMI上显示自定义字符:从COE文件到OSD叠加的保姆级教程

本文详细介绍了如何在FPGA上实现HDMI视频流的OSD字符叠加技术,从COE文件生成到动态区域控制的完整流程。通过Verilog代码示例和实战技巧,帮助开发者掌握字符ROM设计、像素坐标追踪和动态混合等核心技术,适用于视频监控、系统状态显示等应用场景。

weixin_28720767的博客 225

flutter_flutter 仓库 Flutter_3.35.7-ohos_1.0.4-beta 版本解读:OpenHarmony 平台分栏、渲染与性能优化全解析

本篇文章围绕 flutter_flutter 仓库发布的 Flutter OpenHarmony 平台 **1.0.4-beta** 版本(基于 Flutter 3.35.7 适配)展开,完整解读该版本在分栏(SplitView)、横屏全屏、LTPO 帧率控制、DMA 零拷贝图像解码、内存优化与问题修复方面的全部能力。读完本文,你将掌握本版本新增配置项的用法与默认值、分栏导航的实现原理(含源码级调

gitblog_00391的博客 390

Wazuh部署记录

Wazuh是一个免费的开源安全平台,统一了XDR和SIEM功能。它可以保护内部部署、虚拟化、容器化和基于云的环境中的工作负载。Wazuh帮助组织和个人保护其数据资产免受安全威胁。它被全球数千个组织广泛使用,从小型企业到大型企业。443:仪表盘界面访问端口1515:探针连接服务器端口1514:探针回传信息端口以上3个端口必须打开防火墙。

墨痕诉清风的博客 1535

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

RK3568 上跑 OpenHarmony 5.1.0 点屏全流程实战

嵌入式开发中,设备树配置与显示子系统调试是点亮屏幕的关键环节。其原理在于通过 VOP 端口分配、MIPI DSI 时序计算和 PWM 背光控制,实现内核与屏幕的硬件适配。技术价值在于提升系统稳定性和显示性能,广泛应用于工业 HMI、智能终端等场景。以 RK3568 芯片和 OpenHarmony 5.1.0 为例,合理配置设备树参数可解决花屏、偏移等常见问题,确保屏幕快速点亮。

weixin_34242819的博客 397

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OpenHarmony系统调试 - 屏幕方向配置与系统UI启动时序冲突的排查与修复

本文深入分析了OpenHarmony系统中屏幕方向配置与系统UI启动时序冲突的问题,提供了详细的排查方法和解决方案。通过调整ScreenRotationController初始化时机,解决了开机动画与Launcher界面显示异常的问题,为开发者处理类似时序问题提供了实用参考。

weixin_30838873的博客 490

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RK3568 OpenHarmony点屏实战:从源码编译到设备树调优全链路

在嵌入式开发中,显示子系统点亮是设备调试的基础环节,涉及内核驱动、设备树配置与硬件时序的协同。其原理是通过DRM框架管理显示管线,由设备树描述硬件参数,驱动匹配后初始化面板与背光。技术价值在于打通底层显示通路,为上层图形界面提供稳定输出。典型应用场景包括智能终端、工业HMI和物联网设备。以RK3568为例,在OpenHarmony 5.1.0上点屏需依次完成源码编译、内核配置、设备树编写与烧录验证,其中MIPI DSI时序、背光PWM和触摸方向是高频调试点。

weixin_33910460的博客 516

Flutter+OpenHarmony健康应用开发实战

数据可视化是现代移动应用开发中的关键技术,通过图形化方式呈现复杂数据,帮助用户直观理解信息。在跨平台开发框架Flutter中,借助高性能渲染引擎和丰富的图表库,开发者可以高效实现动态数据可视化功能。结合OpenHarmony操作系统的特性适配能力,这种技术组合特别适合健康管理类应用的开发。本文以体重趋势分析为具体场景,详解如何使用fl_chart实现流畅的图表展示,并通过Riverpod状态管理和Hive本地存储构建完整数据链路。这种方案在保证60fps渲染性能的同时,显著降低了OpenHarmony生态的

weixin_33748818的博客 572

Flutter在OpenHarmony上开发单位换算应用实战

跨平台开发框架Flutter通过Dart语言和响应式架构,大幅提升移动应用开发效率。其核心原理在于自建渲染引擎实现平台无关性,配合状态管理等技术方案,可快速构建高性能应用。在OpenHarmony生态中,Flutter能充分利用分布式能力实现多端协同,特别适合工具类应用开发。本文以单位换算工具为例,详解如何结合策略模式设计换算算法,通过Provider管理状态,并优化OpenHarmony环境下的性能表现。项目实测显示,该方案冷启动仅0.8秒,计算耗时小于3ms,验证了Flutter+OpenHarmony

weixin_34008805的博客 380

OpenHarmony API9到API20升级实战:性能优化与ArkTS实践

在跨平台应用开发中,声明式UI框架通过响应式编程范式显著提升了开发效率。以OpenHarmony的ArkTS为例,其类型系统和状态管理机制实现了UI与逻辑的自动同步,这种架构尤其适合需要高频交互的场景。通过@State装饰器和Object Pool等内存优化技术,开发者可以构建出既保持60FPS流畅动画又控制内存占用的应用。本次升级案例中,一个典型的人员抽签工具通过离屏渲染和自适应布局方案,在API20环境下实现了73%的延迟降低和34%的内存节省,验证了新一代OpenHarmony开发范式在IoT、穿戴设

weixin_33701564的博客 1029

OpenHarmony触摸屏坐标校准:GT911驱动适配与调试实战

在嵌入式设备与开源系统开发中,触摸屏的坐标定位准确性直接影响用户体验。电容触摸控制器通过I2C接口上报原始采样坐标,而系统界面需要的是与屏幕分辨率匹配的逻辑坐标,两者之间的线性映射与方向对齐是驱动适配的核心环节。理解坐标转换原理,掌握设备树配置与寄存器读写方法,能够有效解决触摸偏移、反向旋转、边缘失控等常见问题。在OpenHarmony这类新型开源操作系统上,HDF驱动框架的引入使得触摸驱动的注册与事件上报链路与传统Linux有所差异,进一步增加了调试复杂度。本文从触摸控制器的基本工作原理出发,结合GT91

weixin_34122810的博客 577

OpenHarmony上Flutter形状拼图:CustomPaint拖拽交互与适配实践

跨平台开发领域,Flutter凭借一套代码多端运行的特性受到广泛关注。随着OpenHarmony生态发展,将Flutter应用迁移至鸿蒙设备成为现实。本文围绕基于CustomPaint的矢量形状拼图游戏,探讨了在OpenHarmony平板上的实践过程:通过Path几何模型实现任意形状拼图块的绘制与命中检测,利用Listener和坐标转换完成精准拖拽,并设计两阶段吸附判定优化手感。针对真机适配,分析了系统手势冲突、多分辨率适配和渲染性能等关键技术点。该实践验证了Flutter在OpenHarmony上处理图形

weixin_34252686的博客 267
上一篇: OpenHarmony 4.0 Release源码下载、编译及烧录
下一篇: OpenHarmony4.0 OTA升级Demo
Mart!nHu
博客等级 码龄7年 1万+粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值