当前位置: 首页 > news >正文

鸿蒙应用开发学习:让page页面强制横屏

一、学习做了个适合横屏的页面但进入页面后是竖屏显示的

前几天在B站上跟着  黑马程序员的 HarmonyOS4.0开发应用教学视频学习了显式动画(animateTo)和属性动画(animation)功能,并参照教学视频的内容做了个小鱼动画。学习成果在B站上发布了(鸿蒙应用开发学习一个星期的成果_哔哩哔哩_bilibili),但照着做出来的小鱼动画页面有个缺陷,就是进入这个页面后默认是竖屏显示的,要想切换横屏,需要将手机的自动旋转功能打开,手工旋转手机让页面变成横屏的,感觉不方便,我希望进入页面时能自动横屏。

二、如何实现页面强制横屏

为了实现页面强制横屏,我在网上搜了一下,找到了一篇文章涉及到了屏幕旋转的方法(链接https://ost.51cto.com/posts/28158 )。对文章内容研究后,实现了页面强制横屏,方法如下:

1. 首先在项目的EntryAbility.ts文件中 生命周期函数onWindowStageCreate下添加获取窗口实例的代码:

windowStage.getMainWindow((err, data) => {if (err.code) {console.error('获取失败' + JSON.stringify(err));return;}console.info('获取主窗口的实例:' + JSON.stringify(data));globalThis.windowClass = data // 赋值给全局变量windowClass});

2. 在需要强制横屏的页面文件(保存在pages文件夹下的ets文件)添加如下代码:

onPageShow() {// 获取旋转的方向,具体可以查看对应文档let orientation = window.Orientation.LANDSCAPE;try {// 设置屏幕旋转globalThis.windowClass.setPreferredOrientation(orientation, (err) => {});} catch (exception) {console.error('设置失败: ' + JSON.stringify(exception));}}onPageHide() {// 获取旋转的方向,具体可以查看对应文档let orientation = window.Orientation.PORTRAIT;try {// 设置屏幕旋转globalThis.windowClass.setPreferredOrientation(orientation, (err) => {});} catch (exception) {console.error('设置失败: ' + JSON.stringify(exception));}}

添加的这两端代码分别在页面显示生命周期函数将屏幕设置为横屏,在页面隐藏生命周期将屏幕设置为竖屏(如果不做这一步,返回到之前的页面,屏幕仍然是横屏,而之前的页面适合竖屏显示)

添加以上代码后,再次运行应用,从导航页面(竖屏)跳转到小鱼动画页面,屏幕自动变为横屏,再次返回,屏幕又自动切换为竖屏了。

(导航页面是竖屏的)

(进入小鱼动画页面自动横屏了)

相关文章:

  • 国产AI工具钉钉AI助理:开启个性化助手服务的新篇章
  • Cesium笔记 初始化 原生Cesium
  • golang中的字符串拼接
  • MT8766安卓核心板/开发板_MTK联发科4G安卓手机主板方案定制开发
  • 2023年全国职业院校技能大赛软件测试赛题—单元测试卷⑧
  • 联手英特尔,释放星飞分布式全闪存储潜能
  • 用python调用Mybatis
  • RISC-V Bytes: Caller and Callee Saved Registers
  • SSH镜像、systemctl镜像、nginx镜像、tomcat镜像
  • C#编程-属性和反射
  • 从CISC到RISC-V:揭开指令集的面纱
  • 使用 PyQt 实现简单数据绑定和组件化
  • 文献阅读:Large Language Models as Optimizers
  • ZZULIOJ 1112: 进制转换(函数专题)
  • 【JaveWeb教程】(26) Mybatis基础操作(新增、修改、查询、删除) 详细代码示例讲解(最全面)
  • 4个实用的微服务测试策略
  • Apache的基本使用
  • Javascript基础之Array数组API
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Linux中的硬链接与软链接
  • php中curl和soap方式请求服务超时问题
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • spring boot下thymeleaf全局静态变量配置
  • 从零开始的无人驾驶 1
  • 听说你叫Java(二)–Servlet请求
  • 一个项目push到多个远程Git仓库
  • 找一份好的前端工作,起点很重要
  • 白色的风信子
  • 选择阿里云数据库HBase版十大理由
  • # Apache SeaTunnel 究竟是什么?
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (arch)linux 转换文件编码格式
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Python第六天)文件处理
  • (二)hibernate配置管理
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (六)Hibernate的二级缓存
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)h264中avc和flv数据的解析
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .gitignore文件设置了忽略但不生效
  • .htaccess配置常用技巧
  • .htaccess配置重写url引擎
  • .NET 8.0 中有哪些新的变化?
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net 调用php,php 调用.net com组件 --
  • .NET 读取 JSON格式的数据
  • .net 发送邮件
  • .vue文件怎么使用_我在项目中是这样配置Vue的