我们在使用android手机的时候,发现一些应用有横竖屏切换的功能,一般实现有以下几种方法:

一、设置

1.通过XML设置横竖屏切换

在项目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,它有以下几个参数:

“unspecified” 默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.

“landscape” 横屏显示(宽比高要长)

“portrait” 竖屏显示(高比宽要长)

“user” 用户当前首选的方向

“behind” 和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)

“sensor” 有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。

“nosensor” 忽略物理感应器,这样就不会随着用户旋转设备而更改了 ( “unspecified”设置除外 )

2.通过代码设置

在Java代码中通过

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

二、关于布局显示

配置布局的方法有2种,如下:

1.在res目录下建立layout-land和layout-port目录,相应的layout文件名不变。layout-land是横屏的layout,layout-port是竖屏的layout,代码运行后,JVM会自动寻找相应的布局文件。

2.通过this.getResources().getConfiguration().orientation来判断当前是横屏还是竖屏然后来加载相应的xml布局文件。

当屏幕变为横屏的时候,系统会重新呼叫当前Activity的OnCreate方法,即重新载入当前Activity。所以,可以通过判断横竖屏转换来更换布局文件。

三、重新载入

重新载入,即上面提到的转换屏幕时,系统重新呼叫OnCreate方法。由于重新创建Activity,当前屏幕状态下的临时数据会丢失,所以这里有一个关于数据存储的问题。

1.是否重新载入可以设置

设置方法:在androidmanifest.xml中加入配置

android:configChanges="orientation"。

配置该属性后的Activity在运行时,就不会重复的调用onCreate(),甚至不会调用onPause.onResume.只会调用一个

onConfigurationChanged(Configuration newConfig)

2.如果需要重新载入,那么就需要存储临时数据,可以根据Android的相关数据存储方法处理。

如果要彻底禁止翻转,可以设置android:screenOrientation的属性为nosensor,如此就可以忽略重力感应了。

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/5383.html

微信打赏

支付宝打赏

感谢您对作者Lena的打赏,我们会更加努力!    如果您想成为作者,请点我

android实现自动横竖屏切换,android 中实现横竖屏切换【原创】相关推荐

  1. android音频系统(7):通话过程中的音频输出设备切换

    前言:由于通话比较特殊,Android对于通话过程中音频输出设备的切换做了特殊处理,它在上层也是通过切换音频播放状态来完成切换操作的,android用CallAudioState来封装通话过程中的音频 ...

  2. Android 10自动连接WiFi问题 Android 10 断开WiFi问题

    说明:本文主要说明扫码之后自动连接WiFi的一些处理,扫码的流程相对简单,网上教程也比较多,对于目前Android各个版本也没有太多变化. 问题描述:最近在做项目的时候,发现以前的项目有扫描二维码自动 ...

  3. 启用计算机的无线同屏,Win10系统中无线同屏功能的使用方法

    在win10系统中,新增加了一个无线同屏功能,也就是可以将手机屏幕投放到电脑中,但是许多用户并不知道无线同屏功能要怎么使用,方法很简单,现在给大家讲解一下Win10系统中无线同屏功能的使用方法吧. 前 ...

  4. linux分屏命令,Linux中如何分屏显示的指令是什么

    linux中如果想要把某个命令或者程序执行的输出结果分屏显示,可以使用more工具来实现.是几乎所有linux发行版都自带的一个分屏显示的工具. 1:如果只是输出一个文件的内容,可以直接用more来输 ...

  5. python控制台清屏代码_python中代码清屏的方法是什么

    python中代码清屏的方法是什么 发布时间:2020-09-03 10:52:03 来源:亿速云 阅读:97 作者:小新 这篇文章给大家分享的是有关python中代码清屏的方法是什么的内容.小编觉得 ...

  6. android studio 自动生成对象,在Android Studio中快速导入可绘制对象的方法?

    在Android Studio中快速导入可绘制对象的方法? 在Android项目中的某个时候,您将需要在res/drawable目录中导入一些可绘制对象-工具栏图标,图像,UI功能. 大多数情况下,您 ...

  7. android文本自动添加图片格式,Android中多行文本末尾添加图片排版问题的解决方法...

    前言 最近在项目中需要在某个多行英文文本末尾增加一个图片,尝试了很多方法,最后用了一个比较Tricky的方法解决了,当然这种方法不一定是最好最优的解决办法,记录一下. 问题 如果直接使用drawabl ...

  8. android webview 自动点击事件,Android中的WebView布局点击事件的方法

    继承WebView自定义一个MyWebView,然后重载它的onTouchEvent方法,就可以解决了. public class MyWebView extends WebView{ public ...

  9. android进程自动启动时间,如何统计Android App启动时间

    随着App的逻辑不断庞大,一不注意就会将耗时的操作放置在应用启动过程之中,导致应用启动速度越来越慢,用户体验也越来越差.优化启动速度是几乎所有大型App应用开发者需要考虑的问题.优化启动速度之前首先需 ...

  10. android 能自动选择的listview,Android ListView多选模式

    ListView使用多选模式好处 交互与数据分离,在多选状态下不需要修改数据源,在最后确定的时候获取选择索引来确定选择的数据. ListView模式 CHOICE_MODE_NONE:普通模式: CH ...

最新文章

  1. java实现时间的比较
  2. CSS之定位(绝对定位)
  3. Microbiome:人类肠道和病原菌的可移动抗性组驱动环境中抗生素抗性增长
  4. BZOJ 3836 Codeforces 280D k-Maximum Subsequence Sum (模拟费用流、线段树)
  5. hashmap储存有向图_java-对后边缘进行运算以获取有向图中的循环数
  6. 智能家居设备_您的智能家居设备正在监视您吗?
  7. 智能实验室-全能优化(Guardio) 4.0.0.670 beta 8
  8. OpenCV与图像处理学习九——连通区域分析算法(含代码)
  9. 面试分享:那些年我经历过的一些面试,以及得到的一些面试心得!
  10. java datatable用法_C# DataTable用法示例详解|DataTable Select,sort排序,Linq过滤操作
  11. 大学计算机python教材答案_大学计算机python答案
  12. 专利分析:数字人民币的“双离线”支付问题
  13. 关于BFS和dijkstra(2019.04.20)
  14. 1000瓶水有1瓶水有毒,老鼠喝一滴就会死,但是需要一周毒发,请问最少需要多少老鼠多少时间才能找到那瓶有毒的水。
  15. 蓝桥杯第十届国赛C++研究生组 试题 A: 三升序列
  16. day6python基础数据补充
  17. 在vue中使用Echarts的3D柱状图
  18. 今年诺贝尔奖得主居然把这事研究清楚了:学历和收入到底有多大关系?
  19. 网络计算机怎么使用,联想电脑如何进入和使用网络同传功能
  20. 法院拍卖的房子你敢不敢买?

热门文章

  1. php调用无参数函数可以传入参数
  2. 立体视觉(Stereo Vision)-本征矩阵(essential matrix)和基本矩阵(fundamental matrix)
  3. 传统手工特征--opencv
  4. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 7丨字节面试真题【难度困难】
  5. 数据结构 - 队列(图解+源码)
  6. Anaconda 完全入门指南
  7. CompletableFuture详解~thenCompose
  8. python 四足机器人运动学_撸了个四足机器人
  9. 外设驱动库开发笔记25:FM25xxx FRAM存储器驱动
  10. WinSock I/O 模型 -- WSAAsyncSelect 模型