Android横竖屏切换小记

来源:互联网 发布:淘宝网通识课代刷 编辑:程序博客网 时间:2024/06/14 21:31


1、默认情况

默认情况下,横竖屏切换时,activity会先destory之后重新调用各个生命周期,且横竖屏切换时不会调用onConfigurationChanged方法。

onCreate-->onStart-->onResume-->(横竖屏切换)onPause-->onSaveInstanceState(可在此生命周期中保存相关数据)-->onDestroy-->onCreate-->onStart-->onResume


2、设置横竖屏切换时Activity不重新绘制

在配置文件中对应的Activity的<activity>标签中设置

android:configChanges="orientation|screenSize"

设置之后切换横竖屏时调用的流程为

onCreate-->onStart-->onResume-->(横竖屏切换)onConfigurationChanged


3、设置固定横屏或竖屏

方法一:在配置文件中设置 android:screenOrientation="portrait"(竖屏:portrait   横屏:landscape)

方法二:在onResume周期中添加如下代码

if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {//强制竖屏setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}
或者

if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {//强制横屏setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}//因为生命周期的原因,代码强制横屏时,会有竖屏后横屏的过程,在配置文件中设置强制横屏或者在oncreate中设置强制横屏就没关系

4、拓展


配置文件中screenOrientation(设备显示方向)各个值的含义

 android:screenOrientation="unspecified":默认值,由系统决定

landscape:横屏

portrait:竖屏

user:用户的当前首选方向

behind:在Activity堆栈中,和下面的activity的方向一致

sensor:由物理感应器决定

nosensor:忽略感应器的效果,这样屏幕方向不会随屏幕的旋转切换,固定竖屏也可用此方法,但有弊端。

sensorLandscape:由物理感应器决定横屏的方向,注意这里不是横竖屏的切换,是横屏的方向切换。

sensorPortrait:由感应器决定竖屏的方向,同上。

reverseLandscape:固定横屏的方向。

reversePortrait:固定竖屏的方向。

fullSensor:由感应器决定方向。

userLandscape:效果同sensorLandscape

userPortrait:效果同sensorPortrait

fullUser:效果同fullSensor

locked:锁定当前屏幕方向,默认竖屏。





















0 0