Uniapp_app端使用重力感应实现横屏竖屏自动切换

1、进入页面默认是竖屏当手机横着的时候页面也跟着横着

进入页面开启定时器调用相关api去触发横屏竖屏,主要核心代码都在onShow()里面和onHide()里

<template>
<view class="monitor">
	<u-no-network></u-no-network>
	<web-view :src="url" v-if="url" :webview-styles="webviewStyles"></web-view>
</view>
</template>

<script>
	let watchScheen;
	import {
		getProjectHref
	} 
	from '@/api/api.js'
	
	export default {
		data() {
			return {
				url:'',
				webviewStyles:{
					progress:{
						background:'#FF3333',
					},
				},
			}
		},
		
		watch: {
			projectInfo(newVal,oldVal) {
				this.init();
			}
		},
		computed:{
			// 项目详情
			projectInfo(){
				return this.$store.state.projectInfo || {}
			},
		},
		onShow() {
			// 进入web-view页面
			// unlockOrientation => 解锁
			// lockOrientation => 锁定
			// "portrait-primary", //可选,字符串类型,支持竖屏
			// "portrait-secondary", //可选,字符串类型,支持反向竖屏
			// "landscape-primary", //可选,字符串类型,支持横屏
			// "landscape-secondary" //可选,字符串类型,支持反向横屏
			// #ifdef APP-PLUS
			plus.screen.unlockOrientation('portrait-primary');
			/* 5+环境屏幕旋转 */
			watchScheen = setInterval(()=>{
				// 屏幕方向数值: HOME键在右, 0 - 竖屏; 90 - 横屏;  HOME'键在左, 180 - 反向竖屏; -90 - 反向横屏;
				let c = plus.navigator.getOrientation();
				if(c == 0){
					console.log('竖屏',c)
					plus.screen.lockOrientation('portrait-primary'); //锁定竖屏
					plus.navigator.setStatusBarStyle('dark');
					plus.screen.unlockOrientation();
					uni.showTabBar()
				} else if(c == 180){
					console.log('反向竖屏',c)
					plus.screen.lockOrientation('portrait-secondary'); //锁定横屏
					plus.navigator.setStatusBarStyle('dark');
					plus.screen.unlockOrientation();
					uni.hideTabBar()
				} else if(c == -90){
					console.log('反向横屏',c)
					plus.screen.lockOrientation('landscape-secondary'); //锁定反向横屏
					plus.navigator.setStatusBarStyle('dark');
					plus.screen.unlockOrientation();
					uni.hideTabBar()
				} else {
					console.log('横屏',c)
					plus.screen.lockOrientation('landscape-primary'); //锁定反向横屏
					plus.navigator.setStatusBarStyle('dark');
					plus.screen.unlockOrientation();
					uni.hideTabBar()
				}
			},200)
			
			// #endif
			uni.setNavigationBarTitle({
				title:"监控"
			})
			this.init()
		},
		
		onHide() {
			clearInterval(watchScheen)
			// #ifdef APP-PLUS
			/* 5+环境锁定屏幕方向 */
			plus.screen.lockOrientation('portrait-primary'); //锁定
			// #endif
		},
		
		methods:{
			init(){
				uni.showLoading({
					title:"加载中..."
				})
				getProjectHref({
					projectId:this.projectInfo.id,
					hyperLinkAddressType :2
				}).then(res=>{
					if(res){
						this.url = this.$u.trim(res.hyperLinkAddress)
						console.log(this.url);
						// #ifdef APP-PLUS
						let timer = setInterval(()=>{
							uni.setNavigationBarTitle({
								title:"监控"
							})
						},300)
						setTimeout(()=>{
							uni.hideLoading()
							clearInterval(timer)
							timer = null
							var currentWebview = this.$mp.page.$getAppWebview() //获取当前页面的webview对象
							var wv = currentWebview.children()[0]
							wv.setStyle({
								scalable:true,
							})
						},1000*3)
						// #endif
						uni.hideLoading()
					}else{
						this.url = ''
						uni.hideLoading()
						this.utils.toast("此项目暂未配置超链接")
					}
				})
			}
		}
	}
</script>

<style lang="scss" scoped>
	iframe {
		background-color: #111934;
	}
</style>

2、调用重力感应相关api还要在pages.json中添加如下配置

uniapp文档中screenOrientation地址

"globalStyle": {
		"backgroundColor": "#F8F8F8",
		"navigationBarBackgroundColor": "#F8F8F8",
		"navigationBarTextStyle": "white", // 状态栏字体为白色,只能为 white-白色,black-黑色 二选一
		"pageOrientation": "auto" //横屏配置,全局屏幕旋转设置(仅 APP/微信/QQ小程序),支持 auto / portrait / landscape
	},
	"app-plus": {
		"screenOrientation": [
			"portrait-primary",     //可选,字符串类型,支持竖屏
			"portrait-secondary",   //可选,字符串类型,支持反向竖屏
			"landscape-primary",    //可选,字符串类型,支持横屏
			"landscape-secondary"   //可选,字符串类型,支持反向横屏
		],
		"background":"#111934"
	},

因为我是开发app和小程序一起的所以小程序主要的配置实在page.json里面添加这些属性,如果你开发不涉及到小程序就不用加,只需要加globalStyle中的pageOrientation属性

在这里插入图片描述

3、App端配置找到manifest.json文件找到源码视图添加如下配置

//app-plus->screenOrientation
/* ios横屏配置 */
"screenOrientation" : [
   "portrait-primary", //可选,字符串类型,支持竖屏
   "portrait-secondary", //可选,字符串类型,支持反向竖屏
   "landscape-primary", //可选,字符串类型,支持横屏
   "landscape-secondary" //可选,字符串类型,支持反向横屏
],

打包部署测试后发现Android和ios都能正常旋转,但是后面测试发现在ios16版本以上会出现会横屏但是旋转手机竖屏回不来,只有ios16(苹果最新版)版本以上有这个问题在需要在配置中添加"flexible": true,完美解决。

在这里插入图片描述

效果截图如下:

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/56986.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安全加固服务器

根据以下的内容来加固一台Linux服务器的安全。 首先是限制连续密码错误的登录次数&#xff0c;由于RHEL8之后都不再使用pam_tally.so和pam_tally2.so&#xff0c;而是pam_faillock.so 首先进入/usr/lib64/security/中查看有什么模块&#xff0c;确认有pam_faillock.so 因为只…

.Net6 Core Web API 配置 log4net + MySQL

目录 一、导入NuGet 包 二、添加配置文件 log4net.config 三、创建MySQL表格 四、Program全局配置 五、帮助类编写 六、效果展示 小编没有使用依赖注入的方式。 一、导入NuGet 包 ---- log4net 基础包 ---- Microsoft.Extensions.Logging.Log4Net…

【C#学习笔记】值类型(1)

虽然拥有编程基础的人可以很快地上手C#&#xff0c;但是依然需要学习C#的特性和基础。本系列是本人学习C#的笔记&#xff0c;完全按照微软官方文档编写&#xff0c;但是不适合没有编程基础的人。 文章目录 .NET 体系结构Hello&#xff0c;World类型和变量&#xff08;重要&…

Flink之JDBC Sink

这里介绍一下Flink Sink中jdbc sink的使用方法,以mysql为例,这里代码分为两种,事务和非事务 非事务代码 import org.apache.flink.connector.jdbc.JdbcConnectionOptions; import org.apache.flink.connector.jdbc.JdbcExecutionOptions; import org.apache.flink.connector.…

opencv 31-图像平滑处理-方框滤波cv2.boxFilter()

方框滤波&#xff08;Box Filtering&#xff09;是一种简单的图像平滑处理方法&#xff0c;它主要用于去除图像中的噪声和减少细节&#xff0c;同时保持图像的整体亮度分布。 方框滤波的原理很简单&#xff1a;对于图像中的每个像素&#xff0c;将其周围的一个固定大小的邻域内…

vue3和typescript_组件

1 components下新建myComponent.vue 2 页面中引入组件&#xff0c;传入值&#xff0c;并且绑定事件函数。 3

【Valgrind】如何使用Valgrind监控内存

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

计算机视觉与图形学-神经渲染专题-ConsistentNeRF

摘要 Neural Radiance Fields (NeRF) 已通过密集视图图像展示了卓越的 3D 重建能力。然而&#xff0c;在稀疏视图设置下&#xff0c;其性能显着恶化。我们观察到&#xff0c;在这种情况下&#xff0c;学习不同视图之间像素的 3D 一致性对于提高重建质量至关重要。在本文中&…

【LeetCode每日一题】——766.托普利茨矩阵

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【题目进阶】八【解题思路】九【时间频度】十【代码实现】十一【提交结果】 一【题目类别】 矩阵 二【题目难度】 简单 三【题目编号】 766.托普利茨矩阵 四【题目描述…

【测试开发】Mq消息重复如何测试?

本篇文章主要讲述重复消费的原因&#xff0c;以及如何去测试这个场景&#xff0c;最后也会告诉大家&#xff0c;目前互联网项目关于如何避免重复消费的解决方案。 Mq为什么会有重复消费的问题? Mq 常见的缺点之一就是消息重复消费问题&#xff0c;产生这种问题的原因是什么呢…

16、外部配置源与外部配置文件及JSON配置

外部配置源与外部配置文件及JSON配置 application.properties application.yml 这些是配置文件&#xff0c; 命令行配置、环境变量配置、系统属性配置源&#xff0c;这些属于配置源。 外部配置源的作用&#xff1a; Spring Boot相当于对Spring框架进行了封装&#xff0c;Spri…

webrtc的回声消除延迟时间估算

叫回声消除的延迟时间估算不太合理&#xff0c;这里核心就是估算调用webrtc的条件边界&#xff0c;都知道webrtc回声消除的生效的前提就是一定要拿到远端声音的信息&#xff0c;然后拿近端声音和远端声音对齐&#xff0c;从近端声音中&#xff0c;结合远端声音模拟出远端声音在…

Windows用户如何安装新版本cpolar内网穿透超详细教程

Windows用户如何安装新版本cpolar内网穿透 文章目录 Windows用户如何安装新版本cpolar内网穿透 在科学技术高度发达的今天&#xff0c;我们身边充斥着各种电子产品&#xff0c;这些电子产品不仅为我们的工作带来极大的便利&#xff0c;也让生活变得丰富多彩。我们可以使用便携的…

[Python] Pylance 插件打开 Python 的类型检查

安装 Python 插件 2.打开一个 Python 文件 可以看到右下角有一个花括号和 Python 字样&#xff0c;点击花括号&#xff08;不是 Python 字样&#xff09;打开类型检查即可&#xff1a;

酷开系统 | 酷开科技,让数据变得更有价值!

身处信息时代&#xff0c;我们每个人时刻都在生成、传递和应用数据&#xff0c;数据已经成为了现代社会中宝贵的资源之一&#xff0c;而在人工智能领域&#xff0c;数据更是被称为人工智能的“燃料”。 而在AI的发展中&#xff0c;只有拥有高质量、多样性且充分代表性的数据集…

java 定时任务不按照规定时间执行

这里写目录标题 使用异步启动可能出现的问题排查代码中添加的定时任务步骤是否正确排查是否任务阻塞&#xff0c;如果定时任务出现异常阻塞后&#xff0c;将不会在次执行java中多个Scheduled定时器不执行为了让Scheduled效率更高&#xff0c;我们可以通过两种方法将定时任务变成…

vxworks文件系统分析

参考https://www.freebuf.com/articles/endpoint/335030.html 测试固件 https://service.tp-link.com.cn/detail_download_7989.html 固件提取 binwalk解压固件&#xff0c;在第一部分即为要分析的二进制文件&#xff0c;可以拖进ida分析 设置为arm小端字节序&#xff0c;点…

【HarmonyOS】性能优化之低代码开发加载多张轮播图

【关键字】 HarmonyOS、低代码开发、Swiper组件、性能优化、分页加载 写在前面 目前使用DevEco Studio的低代码工具开发元服务时&#xff0c;通过实际测试发现&#xff0c;Swiper组件加载多张轮播图时加载显示耗时较长&#xff08;实际测试网络状态一般的情况下显示耗时达到8…

ER系列路由器多网段划分设置指南

ER系列路由器多网段划分设置指南 - TP-LINK 服务支持 TP-LINK ER系列路由器支持划分多网段&#xff0c;可以针对不同的LAN接口划分网段&#xff0c;即每一个或多个LAN接口对应一个网段&#xff1b;也可以通过一个LAN接口与支持划分802.1Q VLAN的交换机进行对接&#xff0c;实现…

Stable Diffusion:网页版 体验 / AI 绘图

一、官网地址 Stable Diffusion Online 二、Stable Diffusion AI 能做什么 Stable Diffusion AI绘图是一种基于Stable Diffusion模型的生成式AI技术&#xff0c;能够生成各种类型的图像&#xff0c;包括数字艺术、照片增强和图像修复等。以下是一些可能的应用&#xff1a; …