Android 获取屏幕方向,根据屏幕旋转角度判断屏幕实际方向

在使用 getResources().getConfiguration().orientation 获取屏幕方向时,可能会遇到不准确的问题。
这是因为该方法返回的是设备的自然方向,而不是屏幕的实际方向。

在某些情况下,设备的自然方向可能与屏幕的实际方向不同。例如,如果设备是横向放置的,但屏幕是纵向显示的,那么设备的自然方向将是横向,但屏幕的实际方向将是纵向。

要获取屏幕的实际方向,可以使用 getWindowManager().getDefaultDisplay().getRotation() 方法。该方法返回当前屏幕的旋转角度,可以通过判断旋转角度来确定屏幕的实际方向。

这个方法不准确(Configuration):

    public static boolean isLandscrape() {// 判断Android当前的屏幕是横屏还是竖屏。横竖屏判断if (BaseApplication.getApplication().getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT) {//竖屏return false;} else {//横屏return true;}}

推荐使用下面的方法:

public static boolean isLandscrape() {WindowManager windowManager = (WindowManager) BaseApplication.getApplication().getSystemService(WINDOW_SERVICE);int rotation = windowManager.getDefaultDisplay().getRotation();int orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;boolean isLandscape;// 是横屏if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) {// 设备的自然方向是纵向if (rotation == Surface.ROTATION_0) {// 屏幕的实际方向也是纵向orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;isLandscape = false;} else {// 屏幕的实际方向是横向orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;isLandscape = true;}} else {// 设备的自然方向是横向if (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) {// 屏幕的实际方向也是横向orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;isLandscape = true;} else {// 屏幕的实际方向是纵向orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;isLandscape = false;}}
//        setRequestedOrientation(orientation);// 设置屏幕方向return isLandscape;}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排查200M宽带下行速度低于100M问题(七十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

流量分析1--菜刀666

1:菜刀666: 题目描述 分析流量包,过滤http数据流 追踪TCP数据流 对比第5个流和第7个流发现,同样的目录下 多出了6666.jpg。猜测是由攻击者上传,直接在请求包里搜索FFD8--FFD9 保存为1.jpg 利用foremost工具对1.jpg进…

“无忧文件安全!上海迅软DSE文件加密软件助您轻松管控分公司数据!

许多大型企业集团由于旗下有着分布在不同城市的分支机构,因此在规划数据安全解决方案时,不适合采用市面上常见的集中式部署方式来管控各分部服务器,而迅软DSE文件加密软件支持采用分布式部署的方式来解决这一问题。 企业用户只需在总部内部署…

【移动端vant 地址选择滑动不了】

分析: H5页面直接在浏览器打开是没有任何问题的,但是内嵌到小程序中就会出现,目前已出现在抖音,快手,小程序中,其他的没有试 大致看了一下,滑动不了的原因,可能是页面禁止滑动或滚动…

Linux内核上游提交完整流程及示例中的错误及解决

接前一篇文章:Linux内核上游提交完整流程及示例 上篇文章中提到,在步骤“九、发送邮件”中,在 Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): yes 这一步,根据提示输入“y”或“a”后,在笔者的电脑上实际上并…

《使用ThinkPHP6开发项目》 - 设置项目环境变量

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 在上一编我们讲了ThinkPHP6框架的创建,创建完成ThinkPHP6框架后,我们这里就可以开始设置我们的环境变量了。 安装完成ThinkPHP6框架生成的项目文件 修改项目配置我们修改项目config文件夹里的对…

MySQL 数据库如何实现 XA 规范?

本文我们来讨论 MySQL 的 XA 规范有哪些应用相关的内容。 MySQL 为我们提供了分布式事务解决方案,在前面的内容中提到过 binlog 的同步,其实是 MySQL XA 规范的一个应用,那么 XA 规范是如何定义的,具体又是如何应用的呢&#xff…

vscode如何为python设置静态类型检测工具:mypy

设置好之后的效果如下图所示,你可以在下方problems一栏看到工作区所有文件存在的问题 安装mypy就像其他插件一样,在extensions中搜索mypy,再install即可。 但是安装以后,我的vscode弹出了以下通知: The mypy daemon e…

使用DockerUI结合内网穿透工具轻松实现公网访问和管理docker容器

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

【智能家居】六、摄像头安装实现监控功能点、人脸识别(face_recognition的使用)

一、定义及第三方库的说明 OCR (光学字符识别)文字识别、图像识别mjpg-streamer实时流式传输视频工具树莓派mjpg-streamer Face Recognition人脸识别 Dlib 计算机视觉问题的工具和算法face_recognition库OpenCV 计算机视觉和机器学习的开源库 三、香…

Golang AI框架:探索人工智能与Go语言的结合

引言 人工智能(AI)已经成为当今科技领域最热门的话题之一,它在多个领域展现了巨大的潜力和应用价值。而Go语言(Golang)作为一种简洁、高效的编程语言,也在近年来得到了广泛应用和发展。本文将探讨Golang在…

万界星空科技MES---制造企业的加工生产模式

在现代制造业中,加工生产模式是制造企业组织和管理生产过程的重要方面。不同的加工模式适用于不同的生产需求和产品类型。其中流水型、离散型和混合型是三种常见的加工生产模式。1. 流水型加工模式 流水型加工模式是一种高度自动化的生产方式,适用于…

Docker部署开源分布式任务调度系统DolphinScheduler与远程访问办公

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

shell之读取控制台用户输入

目录 使用场景代码 使用场景 根据用户不同的输入执行不通的逻辑,要求当用户输入完成,点击键盘Enter按键的时候读取用户的输入并做出逻辑判断 代码 while : doecho "Do you want to continue with the installation? [yes|no]"read INPUTec…

【Flink on k8s】- 0 - Flink kubernetes operator 快速入门与实战

完整的课程,请点击链接。 目录 一、你将收获 二、适用人群 三、课程介绍

什么是封箱打包一体机

自动封箱打包机是什么?有哪些特点? 自动封箱打包机的介绍 自动封箱打包机是一种集自动封箱及捆扎为一体的包装机,可配套自动化包装流水线使用,自动上下封胶带、多道捆扎,实现后道无人化包装。工作效率高&#xff0c…

深入了解Java 8日期时间新玩法之Year、YearMonth、MonthDay、DayOfWeek

推荐语 在这篇文章中,我们将深入探讨Java 8中Year、YearMonth、MonthDay和DayOfWeek类的功能和使用方法。这些类是在Java 8中引入的新的日期时间API的一部分,它们为我们提供了更灵活、更易用的日期和时间处理能力。 尽管这些类在Java 8中已经出现&…

分享一个基础面试题---手写call

分享一个基础面试题---手写call 手写call笔记第一步第二步第三步 手写call笔记 call():在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法。 let foo {value:1 }; function bar(){console.log(this.value); } bar.call(foo);//1注意两点&…

配置国内Docker镜像源

# 简介 安装好 Docker 后,其 registry server 是默认指向 https://hub.docker.com 的。在国内该hub源访问速度异常慢,尤其是大一点的镜像经常出现timeout。 我们可以通过切换至国内镜像仓库来解决这一问题 # 配置镜像仓库 1.修改配置文件 /etc/docke…

c++线程类的使用

c线程的使用 概述 C11之前,C语言没有对并发编程提供语言级别的支持,这使得我们在编写可移植的并发程序时,存在诸多的不便。现在C11中增加了线程以及线程相关的类,很方便地支持了并发编程,使得编写的多线程程序的可移…