若android程序横竖屏切换时会弹出小键盘,可以在AndroidManifest.xml中设置activity的如下属性:
anroid:WindowSoftInputMode="stateHidden"
在做android或者Ophone开发时,在默认情况下当屏幕从竖评变到横屏时会触发
以上就可以简单的控制你的app画面的显示方式并且在显示方式不变的情况下横竖
android:横竖屏切换总结-布局改变和数据保存
2012-03-1511:24:29|
目录:
引言
一、布局问题
二、重新载入问题
三、Q:横竖屏生命周期的切换有可能是什么样的?
引 言
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、布局问题
1.禁止切换横屏或竖屏
或者setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
这样就可以保证是竖屏总是竖屏了,或者横屏总是横屏。
2.可以切换横屏或竖屏
若要软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局。可以通过以下方法来切换布局:
1)layout-land和layout-port
2)onCreate()中判断横竖屏
if (this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_LANDSCAPE) {
Log.i("info", "landscape");
}
else if (this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT) {
Log.i("info", "portrait");
}
3)横竖屏切换用onConfigurationChanged
首先要在配置Activity的时候进行如下的配置:
<activity android:name=".MyActivity"
另外需要重写Activity的onConfigurationChanged方法。实现方式如下,不需要做太多的内容:
@Override
public void onConfigurationChanged(Configuration newConfig) {
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、重新载入问题
1.不需要重新载入
在androidmanifest.xml中加入配置android:configChanges="orientation|keyboardHidden"
横竖屏切换时调用onConfigurationChanged(Configuration newConfig)
注意:当横屏变竖屏的时候,他会调用两次onConfigurationChanged,而竖屏转横屏时他只调用一次。
2.重新载入,保存之前数据不变onSaveInstanceState()和onRestoreInstanceState()
注意
3.重新载入,保存之前数据不变onRetainNonConfiguration
onRetainNonConfiguration
注意:
使用方法如下:
@Override
public Object onRetainNonConfiguration
}
@Override
public void onCreate(Bundle savedInstanceState) {
}
Q:横竖屏生命周期的切换有可能是什么样的?
a、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
如下:启动一个Activity,
onCreate()
onStart()
onResume()
onSaveInstanceState()
onPause()
onStop()
onDestroy()
onCreate()
onStart()
onRestoreInstanceState()
onResume()
横屏切换到竖屏:(调用两次生命周期)
onSaveInstanceState()
onPause()
onStop()
onDestroy()
onCreate()
onStart()
onRestoreInstanceState()
onResume()
onSaveInstanceState()
onPause()
onStop()
onDestroy()
onCreate()
onStart()
onRestoreInstanceState()
onResume()
b、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
c、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。