如何让Android横竖屏切换时不销毁当前activity

我们都知道android 屏幕横向或竖向相互转换的时候会销毁当前的Activity 然后重启它。

为了横竖屏切换时不销毁当前Activity 我来介绍两种方法。

 方法一:不允许横竖屏切换:

实现方法: Activity中还有一属性和屏幕方向有关:

 android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "sensor" | "nosensor"]

在Mainifest.xml的Activity元素中增加这么一个属性:

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

 android:screenOrientation=”landscape”,为横屏显示。

//--------------------------------------------------------------------------------------------

 方法二:

 首先在Mainifest.xml的Activity元素中加入android:configChanges=”orientation|keyboardHidden”属性:

 加入这条属性的含义是,应用程序将会处理屏幕方向和键盘状态(推出或合上)信息的改动。

但对于其他的设备配置信息的改动则会由Android系统来处理(销毁当前Activity,然后重启一个新的Activity实例)

 然后 在java代码的activity子类中加入配置信息改动的处理代码:

 //-----------------------------------------------------------------------------------------

@Override public void onConfigurationChanged(Configuration newConfig)

{

super.onConfigurationChanged(newConfig);

 // 检测屏幕的方向:纵向或横向

 if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)

{

 //当前为横屏, 在此处添加额外的处理代码

 } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)

{

//当前为竖屏, 在此处添加额外的处理代码

}

//检测实体键盘的状态:推出或者合上

if (newConfig.hardKeyboardHidden ) == Configuration.HARDKEYBOARDHIDDEN_NO)

{

//实体键盘处于推出状态,在此处添加额外的处理代码

} else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES)

{

 //实体键盘处于合上状态,在此处添加额外的处理代码

}

 }

posted @ 2011-10-28 12:01  青香蕉  阅读(920)  评论(0编辑  收藏  举报