HarmonyOS鸿蒙Next大咖课后问答·有奖互动丨学习线上课程《体验打磨:应用横竖屏无缝切换》赢好礼!

HarmonyOS鸿蒙Next大咖课后问答·有奖互动丨学习线上课程《体验打磨:应用横竖屏无缝切换》赢好礼!

活动背景与目的

随着鸿蒙生态的不断发展,掌握HarmonyOS开发技能已成为众多开发者的迫切需求。为了助力开发者们深入了解HarmonyOS开发,在课程赋能培训后,我们将邀请行业大咖为大家做相关主题的课后答疑。通过丰富的课程内容以及和大咖之间的互动交流,我们希望能够有更多开发者掌握其核心技术与开发能力,携手打造更多优质的鸿蒙原生应用。

本期答疑时间与答疑对象

答疑时间:2025年3月11日至2025年3月30日

答疑对象:参加过线上课程培训及在HarmonyOS开发过程中有问题的开发者

本期学习课程

体验打磨:应用横竖屏无缝切换

直播链接点击这里

课程介绍

应用存在竖屏和横屏两种操作体验:竖屏便于单手操作,适合日常使用场景;横屏拥有宽阔视野,利于视频播放、文档处理等场景。若横竖屏切换体验设计不完善,就可能出现画面变形、内容显示不全、布局错乱等问题,影响用户体验。本课程聚焦应用横竖屏切换,通过横竖屏功能讲解,提供不同终端的优化建议,并结合典型案例与常见问题,给予更加顺滑、稳定的横竖屏切换体验。

答疑内容与评审规则

优质评论互动

围绕“体验打磨:应用横竖屏无缝切换”主题,在本帖下方评论区回复与主题相关的疑问或看法,本期鸿蒙生态布道师将进行解答互动。(本次答疑重点如下)

应用横竖屏切换 横竖屏功能介绍 横竖屏适配指导 横竖屏适配常见问题

评审规则

本次优质评论互动用户由本期鸿蒙生态布道师根据评论内容人工筛选,初步选出候选名单,运营团队将对候选名单进行复核,最终选出5名获奖用户,获得定制手机支架+帆布包+鼠标垫。


我们诚邀您参与问卷调查, 您的意见, 是我们进步的动力

活动说明

1、活动结束后10个工作日内公布获奖名单,奖品将在20个工作日内发放,逾期则视为放弃礼品,官方不再安排补发。

2、请勿出现以下情况,一经发现,删评处理并取消获奖资格,情节严重将作禁言处理:例如匿名参与盖楼评论;回复与本帖主题无关的评论等灌水行为。

3、所有回复禁止带有色情、政治、人身攻击,或者其他任何违法违规或有违公序良俗的内容,一经发现,封禁处理。

4、恶意隐藏回复内容,空占楼层的行为,一经发现,删评并永久禁言。

5、禁止抄袭、复制他人发帖内容,一经发现取消其获奖资格。

其他说明

隐私声明:本次活动收集您的姓名、论坛昵称、手机号码和联系地址用于获奖资格核验及奖品发放,当前奖品的寄送服务由第三方物流公司提供,因此我们会将您的上述信息进行共享。您的上述信息在国内留存不超过2年,详细隐私保护政策请阅读《关于华为开发者联盟与隐私的声明》。

您参与活动即表示您同意以上声明。


更多关于HarmonyOS鸿蒙Next大咖课后问答·有奖互动丨学习线上课程《体验打磨:应用横竖屏无缝切换》赢好礼!的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

感谢老师的课程指导!关于横竖屏切换,我的疑问如下:

  1. 对于折叠屏设备,需要同时适配横竖屏和多窗口,都需要注意什么?有什么比较好的布局方案可以参考?

  2. 横竖屏切换时,应该优先使用哪种布局,使得性能更好?比如Flex和Grid都能实现的布局,哪个性能更佳?

  3. 横竖屏切换的阈值支持自定义吗?

更多关于HarmonyOS鸿蒙Next大咖课后问答·有奖互动丨学习线上课程《体验打磨:应用横竖屏无缝切换》赢好礼!的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


对于折叠屏设备,需要同时适配横竖屏和多窗口,都需要注意什么?有什么比较好的布局方案可以参考?

需要关注的是屏幕尺寸变化时,优化多窗口模式下的布局和交互,根据屏幕形态和窗口尺寸动态调整布局。可以使用响应式布局设计,如采用Grid、Flex 布局和媒体查询来实现响应式设计。

可以参考: https://developer.huawei.com/consumer/cn/doc/best-practices-V14/bpta-multi-window-V14
https://developer.huawei.com/consumer/cn/doc/best-practices-V14/bpta-multi-window-practice-V14

  1. 横竖屏切换时,应该优先使用哪种布局,使得性能更好?比如Flex和Grid都能实现的布局,哪个性能更佳?

简单布局,优先使用 Flex 布局,性能更好。复杂布局优先使用 Grid 布局,功能更强大。
动态调整:在横竖屏切换时,可以通过监听屏幕方向变化,动态切换布局方式。例如:竖屏时使用 Flex 布局。横屏时使用 Grid 布局。

  1. 横竖屏切换的阈值支持自定义吗?

默认的鸿蒙系统的横竖屏切换阈值是系统定义的,不支持直接自定义。不过可以通过其它方式,比如课程中讲的通过监听设备重力传感器数据的变化sensor.on(sensor.SensorId.GRAVITY, (data: sensor.GravityResponse) =>{...}),来实现自定义的横竖屏切换逻辑。

体验打磨:应用横竖屏无缝切换

你好老师,有两个问题。

  1. 在HarmonyOS应用横竖屏切换场景中,如何通过声明式UI框架(ArkUI)实现动态布局的平滑过渡?当设备旋转时,如何避免界面重建导致的视频播放中断或数据丢失?
  2. Flex弹性布局与Grid栅格布局在横竖屏适配中的优先级策略,以及如何通过@State@Watch响应式能力保持组件状态?
  1. 实现动态布局的平滑过渡。这个没有理解,能再详细的举例说明下嘛。

  2. 设备旋转时,横竖屏切换,不会影响视频的播放中断或数据丢失。代码可以参考:https://gitee.com/harmonyos_samples/LandscapePortraitToggle

  3. 针对FLex弹性布局和Grid栅格布局,更多的可能是和具体的app的ux设计有关。
    如果要推荐的话,可以优先使用Grid栅格布局,因为它更适合处理多维度布局和响应式设计;如果布局简单,可以使用Flex布局。
    最后还是需要根据具体的场景需求来选择合适的布局方式。

  4. @State 修饰的变量是组件的私有状态,只能在组件内部使用。当状态变化时,组件会自动重新渲染。
    @Watch 应用于对 @State@Prop 等状态变量的监听。如果开发者需要关注某个状态变量的值是否改变,可以使用 @Watch 为状态变量设置回调函数。

平滑过渡动画实现----

  1. 布局变化动画衔接
Flex({ direction: this.isLandscape ? 'row' : 'column' }) {
  // ...
}
.transition({ 
  type: TransitionType.Insert, 
  opacity: 0.99, // 防止布局闪烁
  translate: { x: 100, y: 0 }
})
.animation({ 
  duration: 300, 
  curve: Curve.EaseOut 
})
  1. 组件级动画同步
// 视频容器尺寸变化动画
VideoComponent()
  .constraintSize({
    width: this.isLandscape ? '100%' : '80%',
    height: this.isLandscape ? '70vh' : '40vh'
  })
  .animateTo({
    duration: 250,
    curve: Curve.Friction
  })

研究了下动态平滑过渡,不知道这样写有没有问题?

感谢大咖授课,让我对于屏幕旋转有了全面和深入的了解。其中module.json5中的orientation字段在新建的工程中是没有这个字段的,它的默认值难道是:未定义由系统判定?我们开发的APP主要在手机mate60上测试过了,是不转屏的。那其它的设备就会由系统判定从而有可能转屏吗?

还有一处地方没听明白:如何获取和监听控制中心的转屏锁定按钮状态?其它按钮的状态是不是也能获取到呢?例如飞行模式、定位等等

使用某些app在竖屏后再横屏时,屏幕会变为全屏而不是双屏模式,怎么回事?怎么解决?

这个应该是app自己的ux设计如此。正如我们课程中建议的那样:

  1. 直板机横屏,建议根据内容,实现分栏或者栅格响应式布局。
  2. 应用页面横屏,以播放为例,建议是播窗单独全屏横屏。

对于有些app,他们没有采用分栏布局设计,只是单纯的设置了自动旋转。所以会导致,竖屏切换横屏时,全屏显示。

解决方案:如果业务是想分屏显示,那么使用分栏即可。代码可以参考:

https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-multi-columns-V5

HarmonyOS鸿蒙Next中的“应用横竖屏无缝切换”功能主要依赖于系统的UI框架和布局管理机制。鸿蒙系统通过其独特的ArkUI框架,支持开发者使用声明式UI编程方式,能够高效地实现应用在不同屏幕方向(横屏、竖屏)之间的无缝切换。ArkUI框架提供了灵活的布局组件,如FlexGridStack等,开发者可以通过这些组件定义不同屏幕方向下的布局策略。

在鸿蒙系统中,应用可以通过监听屏幕方向变化事件(如onConfigurationUpdate)来动态调整UI布局。系统会自动处理屏幕旋转时的UI重绘,确保应用在不同方向下的显示效果一致且流畅。此外,鸿蒙系统还支持多窗口模式,允许应用在分屏、浮窗等场景下自适应屏幕方向变化。

鸿蒙Next进一步优化了横竖屏切换的性能和用户体验。通过使用高效的渲染引擎和布局算法,系统能够在屏幕旋转时快速响应,减少卡顿和延迟。开发者可以通过鸿蒙开发工具(如DevEco Studio)进行布局调试和预览,确保应用在不同屏幕方向下的表现符合预期。

总之,鸿蒙系统通过其强大的UI框架和布局管理机制,为开发者提供了便捷的工具和方法,实现应用横竖屏无缝切换,提升用户体验。

回到顶部