Android横竖屏解析

Android App屏幕旋转要点 Android App屏幕旋转因素、要点 android:screenOrientation android:configChanges onConfigurationChanged 阅读详情

相信大家都或多或少的为横竖屏烦恼过吧,毕竟我们在开发中用到这方面的知识还是挺多的,比如我上一篇讲VideoView的博客,在播放视频的时候,能够自如的切换横竖屏是很有必要的。所以这篇博客就来解析Android中的横竖屏。

1、screenOrientation

当手机没有关闭横竖屏切换功能时,系统一旦触发横竖屏切换,缺省状态(即系统默认状态)下,当前活动的App的界面就会进行横竖屏切换,由于横竖屏的界面尺寸等参数不同,很多软件在设计和开发中为了避免横竖屏切换时引发不必要的麻烦,通常需要让App禁止掉横竖屏的切换,这就需要通过在AndroidManifest.xml中设置Activity中的android:screenOrientation属性值来实现。

screenOrientation属性,有以下几个参数:

  • unspecified:默认值 由系统来判断显示方向,判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
  • landscape:横屏显示
  • portrait:竖屏显示
  • user:用户当前首选的方向
  • behind:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
  • sensor:有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
  • nosensor:忽略物理感应器,这样就不会随着用户旋转设备而更改了(unspecified设置除外)。

如果android:screenOrientation=”portrait”,则无论手机如何变动,拥有这个属性的Activity都将是竖屏显示。是landscape则为横屏。

上述修改也可以在代码中通过类似如下代码来设置:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

2、手动切换

由上面描述可知,当android:screenOrientation为默认值”unspecified”或”sensor”等时,就会有系统根据设备的旋转情况来触发横竖屏的切换,那么有没有方法我们手动在程序中触发横竖屏的变换呢,显然上面为我们提供的setRequestedOrientation就是系统提供的一个入口。

在Activity中提供了一个方法,会在设置的参数发生变化时被调用,而我们的orientation也属于设置里的参数,所以我们可以用它去监听横竖屏变化。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

newConfig就是就有现在改变的所有设置参数,我们这样就可以知道是横屏还是竖屏。

String message= newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ? "屏幕设置为:横屏" : "屏幕设置为:竖屏";

手动调用时,会无视AndroidManifest中关于screenOrientation的设置。

3、重启Activity

在切换了横竖屏后(包括用setRequestedOrientation调用)都会重新调用一轮on

Android横竖屏切换问题解析与解决方案 Android屏幕方向控制是应用开发中的重要技术点,涉及Activity生命周期、WindowManager策略和系统级方向决策机制。从技术原理看,系统通过多层级的显示方向控制体系(应用层请求 → WindowManager策略 → 物理传感器数据 → 系统默认配置)最终确定屏幕方向。在视频播放、游戏等需要固定横屏的应用场景中,开发者常遇到方向锁定失效问题,特别是在透明主题Activity、分屏模式等特殊场景下。通过分析WindowManagerService的核心机制和常见失效原因,可以采用动态设置方向、 阅读详情

相关推荐

Android横竖屏切换:生命周期、配置与布局适配实战解析

本文深入解析Android横竖屏切换的生命周期管理、configChanges配置与onConfigurationChanged使用技巧。通过实战案例详细讲解如何避免数据丢失、优化布局适配,并提供横竖屏切换的最佳实践方案,帮助开发者提升应用体验。

m2n3b4v5c6的博客 643

Android 13.0 系统开机屏幕设置默认横屏显示

在13.0的系统产品开发中,对于产品需求来说,由于是宽屏设备所以产品需要开机默认横屏显示,开机横屏显示这就需要从 两部分来实现,一部分是系统开机动画横屏显示,另一部分是系统屏幕显示横屏显示,从这两方面就可以做到开机默认横屏显示了

安卓兼职framework和app工程师的博客 2755

Android应用程序如何设置默认为横屏显示

这个属性告诉Android系统,我们希望该Activity在横屏模式下显示。需要注意的是,如果您在Manifest文件中已经设置了横屏属性,那么上述代码中的屏幕方向检查可能是多余的。但是,将其包含在代码中可以作为一种安全措施,以确保Activity始终以横屏显示。然后,使用代码检测并更改屏幕方向,以确保Activity在需要时始终以横屏模式显示。在开发Android应用程序时,有时我们可能希望应用程序的默认屏幕方向为横屏。这样,我们就完成了将Android应用程序的默认屏幕方向设置为横屏的过程。

DevPhantom的博客 1337

【颠覆传统】Android锁屏界面全新重构:深度解析SystemUI横竖屏智能适配秘诀

在移动互联网时代,锁屏界面不仅仅是安全防护的第一道屏障,更是用户接触手机的第一视觉体验。随着设备形态日益多样化,如何在横屏与竖屏之间实现无缝适配,已成为Android SystemUI设计中亟待攻克的难题。本文将从技术原理、设计理念到具体实现,为大家揭秘如何重构Android锁屏界面的动态布局,带来前所未有的用户体验革新。

s13596191285的博客 184

OpenCLI入门:让任何网站变成你的命令行工具(超详细版)

最有用的工具,往往是最简单的。 opencli就是这样。 它不会帮你写代码,不会帮你做决策,但它能把200+个平台装进你的命令行。 让你用最简单的方式,获取最丰富的数据。

weixin_66295112的博客 2091

思科网络进阶——多生成树协议(MSTP)配置的一课一得

三、实验拓扑1)设计一个网络架构,要有核心层和接入层,都使用思科交换机。2)企业有4个部门,要求这四个部门都可以上网,但分属不同的VLAN中,这样今后可以做其它安全策略以确保网络安全,这些策略如今后学到的访问控制列表ACL。3)网络架构的设计要具有冗余,防止一条线路或一台设备终端导致的业务中断。4)由于硬件冗余而产生的环路要处理好,也就是要在逻辑上(或者说通过配置)防止物理环路的产生。5)不能因为防止物理环路而导致某端口没有流量,这样浪费端口资源及设备间互联的带宽资源。

zhu52010的博客 3398

自动驾驶嵌入式修炼秘籍:理想L9自动驾驶域控制器拆解

自动驾驶嵌入式修炼秘籍:理想L9自动驾驶域控制器拆解

pathfinder888的博客 2548

保姆级教程:用R包ggpicrust2搞定PICRUSt2功能预测,从差异分析到热图PCA一键出图

本文提供了一份详细的ggpicrust2使用指南,帮助用户从零开始完成PICRUSt2功能预测数据的差异分析和可视化。通过安装配置、数据导入、差异分析到高级可视化(如热图和PCA)的全流程讲解,即使是初学者也能快速掌握发表级图表的生成技巧。

weixin_33712987的博客 384

信号削峰CFR基础知识介绍(一)

接下来,将得到的峰值分成若干段,在每一段中,仅保留该段内所有峰值中幅度最大的峰值。为了减少不必要的带外泄露,削峰后的信号将通过一个低通滤波器,以减少对应于削峰后信号中尖锐拐角的高频信号。首先,它识别出高于由目标PAPR确定的阈值的峰值。在峰值加窗算法中,削峰是通过在峰值区域将原始信号与一个加窗函数相乘来实现的,如下图所示。其中,w(n) 是一种常见的加窗函数,如凯撒窗、高斯窗和汉明窗等,而 p(n) 是一个加权系数。如上图所示,削峰会导致削峰后的信号出现尖锐的拐角,从而引发不必要的带外辐射(ACP增加)。

weixin_49761275的博客 1551

Android14 RK3576开发板有线网卡静态IP配置全攻略(附数据库修改详解)

本文详细介绍了在Android 14 RK3576开发板上实现有线网卡出厂默认静态IP配置的完整方案。通过深入修改系统源码和SettingsProvider数据库,扩展全局设置字段并注入默认值,确保设备首次启动即自动应用预设的IP地址、子网掩码、网关和DNS,适用于工业控制、数字标牌等批量部署场景,有效提升生产效率。

weixin_29253711的博客 606

混合开关电容DCDC变换器技术解析与工程应用指南

在电源设计领域,传统DCDC变换器在高降压比或高升压比场景下,往往面临占空比过窄、开关应力大、效率偏低等瓶颈。开关电容变换器虽能实现固定比例的电压变换,却受限于调节能力。混合开关电容DCDC变换器通过“开关电容网络粗调变比+电感式DCDC细调输出”的策略,兼顾高效率、高功率密度与宽调压范围。本文梳理了其典型拓扑(如2:1/4:1 SC+Buck)、关键对比、控制策略(含软充电)及工程应用中的常见问题,帮助电源工程师在服务器供电、快充、车载电源等场景下快速选型与调试。

weixin_29164185的博客 313

多模态大模型助力AI人工智能领域的智能决策

我们的目的是深入了解多模态大模型是怎样在AI人工智能领域帮助做出智能决策的。范围涵盖了多模态大模型的基本概念、工作原理、在不同场景下的应用,以及未来的发展方向等。接下来,我们会先介绍多模态大模型和智能决策的核心概念,再讲讲它们之间的关系。然后说说多模态大模型在智能决策中的算法原理和操作步骤,用数学公式来解释一下。接着通过一个项目实战案例让大家更直观地感受。之后看看多模态大模型在实际中的应用场景,推荐一些学习的工具和资源。最后探讨未来的发展趋势和挑战,进行总结并提出一些思考题。多模态大模型。

AIGC应用创新大全的博客 918

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: Android控件--VideoView
下一篇: Android自定义视频播放器
因人而异
博客等级 码龄10年 46粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值