Android(十八)横竖屏的切换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android(十八)横竖屏的切换相关的知识,希望对你有一定的参考价值。
1.强制横竖屏。
这就需要通过在androidManifest.xml中设置activity中的android:screenOrientation属性值来实现。
该android:screenOrientation属性,他有以下几个参数:
"unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape":横屏显示(宽比高要长)
"portrait":竖屏显示(高比宽要长)
"user":用户当前首选的方向
"behind":和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
"sensor":有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
"nosensor":忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。
比如下列设置
android:screenOrientation="portrait"
则无论手机如何变动,拥有这个属性的activity都将是竖屏显示。
android:screenOrientation="landscape",为横屏显示。
上述修改也可以在Java代码中通过类似如下代码来设置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
2.非重启横竖屏切换
首先,manifest中为相应的Activity设置android:configChanges属性,从而让Activity不延续上述的重建流程,具体如下:
Andorid 3.2以前的SDK可以使用如下配置
android:configChanges="orientation|keyboardHidden"
而Adnroid 3.2以后的SDK必须添加一个screenSize属性,具体如下
android:configChanges="keyboardHidden|orientation|screenSize"
或者 android:configChanges="orientation|screenSize"
screenOrientation属性在前面已经讲过了,而关于configChanges属性设置有如下选项:
值 |
描述 |
mcc |
IMSI移动台的国家代码(MCC)发生变化——一个SIM被探测到并且更新MCC |
mnc |
IMSI移动台的网络代码(MNC)发生变化——一个SIM被探测到并且更新MNC |
locale |
区域发生变化——用户选择了一个文本需要显示的新语言 |
touchscreen |
触摸屏发生变化。(这个通常不会发生。) |
keyboard |
键盘类型发生变化——例如:用户插入了外接键盘。 |
keyboardHidden |
键盘的可访问性发生变化——例如:用户发现了硬件键盘。 |
navigation |
导航类型(轨迹球或dpad)发生变化。(通常不会发生。) |
screenLayout |
屏幕布局发生变化——这个会导致显示不同的Activity。 |
fontScale |
字体缩放因子发生变化——用户选择了新的字体大小。 |
uiMode |
当UI模式发生改变的时候——当用户放置设备到桌子或/汽车或夜间模式改变的时候可以引起UI模式变化。阅读UiModeManager。在API级别8时引入。 |
orientation |
屏幕方向发生变化——用户旋转了屏幕。注意:如果应用程序的目标API级别是13或更高(通过属性minSdkVersion和属性targetSdkVersion声明),你也需要声明配置项screenSize,因为这将在设备选择肖像和屏幕方向时发生改变。 |
screenSize |
当前可用屏幕大小发生变化。这代表一个当前可用大小的变化,和当前的比率相关,因此当用户选择不同的画面和图像,会发生变化。然而,如果你的程序目标API级别是12或更低,你的Activity总是会自己处理这个配置变化(这个变化不会引起Activity的重启,甚至在Android 3.2或更新的设备上)。在API级别13里加入的。 |
smallestScreenSize |
物理屏幕大小的变化。不管方向的变化,仅仅在实际物理屏幕打包变化的时候,如:外接显示器。这个配置项的变化引起在smallestWidth configuration里的变化。然而,如果你的程序目标API级别是12或更低,你的Activity将自己处理这个变化(这个变化不会引起Activity的重启,甚至在Android 3.2或更新的设备上)在API级别13里加入的。 |
layoutDirection |
布局方向变化。例如书写方式从左向右(LTR)转换为从右向左(RTL) |
以上是关于Android(十八)横竖屏的切换的主要内容,如果未能解决你的问题,请参考以下文章