专栏首页C++核心准则原文翻译自学HarmonyOS应用开发(64)- 处理屏幕旋转

自学HarmonyOS应用开发(64)- 处理屏幕旋转

旋转屏幕是手机用户的一个日常操作,本文介绍如何在屏幕旋转时自动调整屏幕布局的方法。效果如下:

间接处理屏幕旋转

默认情况下用户旋转屏幕时,Harmony应用架构会调用AbilitySlice类的onStart方法,所以原则上讲,只要开发者在onStart中获取屏幕方向并选择适当的画面布局就间接处理了屏幕旋转。

如果稍加调查,可以发现Ability类有一个颇具迷惑性的方法:

public int getDisplayOrientation()

但是很遗憾,这个方法返回的是开发者在config.json中定义的那个orientation,它不会随着屏幕的旋转而改变。

获取屏幕方向需要像下面这样做:

Configuration config = this.getResourceManager().getConfiguration();
if(config.direction == Configuration.DIRECTION_HORIZONTAL){
    super.setUIContent(ResourceTable.Layout_ability_main_horz);
}
else{
    super.setUIContent(ResourceTable.Layout_ability_main_vert);
}

接下来的事情就容易多了。

直接处理屏幕旋转

另外一个和getDisplayOrientiaon同样具有迷惑性的是Ability和AbilitySlice都有一个屏幕旋转事件处理方法,看起来开发者只要重写这个方法就能接受相应的通知。

void onOrientationChanged(AbilityInfo.DisplayOrientation displayOrientation)

但是事实是:只是重写这个方法,屏幕旋转时它根本不会被调用。解决这个问题的方法是修改config.json文件并增加红框中的内容:

另外一个事实是:一旦你为Ability的configChanges指定了orientation值,屏幕旋转时Harmony架构就不会再调用onStart方法了。

只能二选一。

参考代码

完整代码可以从以下链接下载:

https://github.com/xueweiguo/Harmony/tree/master/StopWatch

参考资料

Java API参考-Ability (harmonyos.com)

https://developer.harmonyos.com/cn/docs/documentation/doc-references/ability-0000001054120007

配置文件的元素

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-config-file-elements-0000000000034463

作者著作介绍

《实战Python设计模式》是作者去年3月份出版的技术书籍,该书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 搭建鸿蒙编译环境(VMware+Linux)

    分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发任务和传输数据。分布式软总线示意图见。

    跋扈洋
  • 自学HarmonyOS应用开发(59)- 处理拖动事件

    在Harmony应用中通过实现Component.DraggedListener接口处理拖动事件,这个接口的方法一共有6个,这里我们只是用其中的3个:

    面向对象思考
  • HarmonyOS-对Android开发者也太友好了吧

    2020年9月10日,华为消费者业务软件部总裁王成录又一次站在了松山湖华为开发者大会的主舞台上。今年,他带来了万众瞩目的华为鸿蒙HarmonyOS2.0...

    Android扫地僧
  • 带你了解鸿蒙开发基本流程

    2020年9月10号,鸿蒙2.0(HarmonyOS 2.0)系统正式发布,鸿蒙2.0面向应用开发者发布Beta版本,

    Python进击者
  • 开发跨设备的鸿蒙(HarmonyOS) App

    为了让更多的人看到本文,请各位读者动动小手,点击右上角【...】,将本文分享到朋友圈,thanks!

    蒙娜丽宁
  • HarmonyOS与Android的全面对比

    第二是我个人非常看好鸿蒙系统的未来,清楚明白华为和一些民族企业担负的责任和国人的期待,虽然带着一些民族感情;鸿蒙刚发布的时候自己是非常激动的,但是后来项目太忙一...

    肉眼品世界
  • 从行动上支持鸿蒙,HarmonyOS开发环境搭建快人一步

    HUAWEI DevEco Studio(简称DevEco Studio)是基于IntelliJ IDEA Community开源版本打造,面向华为终端全场景多...

    java乐园
  • 前端视角看HarmonyOS

    公元 2021 年 6 月 2 日,【 HarmonyOS2.0 】正式发布,以 JavaScript 作为 IoT 应用开发的架构语言,这是继 SpaceX ...

    公众号@魔术师卡颂
  • HarmonyOS 生态,投入还是继续观望?

    HarmonyOS 2.0 从首次亮相至今快满一年,回顾过去一年里的关键节点:2020 年 9 月在华为开发者大会上,HarmonyOS 2.0 首次亮相;20...

    深度学习与Python
  • 抢先学鸿蒙(HarmonyOS)2.0,你就是下一个大咖!

    2020年9月10日,华为开发者大会发布了鸿蒙(HarmonyOS)2.0。HarmonyOS是全场景操作系统。也就是说,从理论上,HarmonyOS可以在任何...

    蒙娜丽宁
  • 【第22期】HarmonyOS应用开发(基础篇)

    这不就是说,以后华为手机都是鸿蒙系统了嘛?鸿蒙还发出了一条视频,视频中显示2021年6月2号将开启鸿蒙操作系统及华为全场景新品发布会。预计现在支持EMUI11升...

    siberiawolf
  • HarmonyOS简介

    前两天,华为发布了HarmonyOS 2.0,俺也赶个时髦,给大家简单介绍下HarmonyOS。

    xiangzhihong
  • 基于 Hi3861 平台的 HarmonyOS Device 开发体验

    编程界有个传承了几十年的”规矩“--入门先从环境搭建开始,有的时候环境搭建比较简单,比如学习 HTML 编程,有浏览器就行;有时候又比较繁琐,比如 React ...

    胡琦
  • 【HarmonyOS 专题】01 基础 Mac 环境安装配置

    HarmonyOS 已于 2020 年 12 更新到 2.0 版本;和尚周围的人都在学习和研究,和尚也想学习一下;今天和尚从 0 开始学习,第一步简单介绍基础...

    阿策小和尚
  • 屏幕方向该知道的那些事儿

    前言     这两天在学关于屏幕旋转的相关的知识,也延伸出了加速器和陀螺仪这些以前没有深入去学习过的知识点,在没有仔细看之前也有一些问题在想,比如;用户关闭了手...

    Mr.RisingSun
  • js调用原生API--陀螺仪和加速器

    介绍 W3C设备方向规范允许开发者使用陀螺仪和加速计的数据。这个功能能被用来在现代浏览器里构筑虚拟现实和增强现实的体验。但是这处理原生数据的学习曲线对开发者来说...

    前朝楚水
  • 技术分析 | HarmonyOS到底是不是Android套皮?

    最近鸿蒙系统关注度好高,支持与反对、看好和看衰、「自主的全场景分布式系统」和「Android套壳」各执一词,吵的不可开交。

    刘盼
  • Activity横竖屏切换的那些事

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/...

    程序员徐公
  • 我的HarmonyOS实战——鸿蒙系统初定义

    鸿蒙并不是一个单纯的手机操作系统,而是手机+智能设备的总称。可以安装在包括手机、手表、无人机等很多设备上。

    天道Vax的时间宝藏

扫码关注云+社区

领取腾讯云代金券