Android 横竖屏切换的处理

来源:互联网 发布:电子商务税收流失数据 编辑:程序博客网 时间:2024/04/29 06:28

Android 中,缺省情况下屏幕的切换动会销毁当前的Activity,并且重启Activity。当然这种缺省的处理方式可能不符合我们的要求。 可以有多种选择改变这种处理方式。

 

一种方式是在销毁Activity前保存数据,在Activity再次Create的时候载入配置。onSaveInstanceState 负责在销毁Activity之前保存数据。

 

 

@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);if (dataString != null) {outState.putString("data", dataString);}}

 

onCreate(Bundle savedInstanceState) 负责恢复数据

 

 

public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);                dataString = savedInstanceState.getString("data");        }

 

onRetainNonConfigurationInstance() 和 getLastNonConfigurationInstance() 可以实现类似的功能。 前者用来保存数据,后者用来恢复数据,不过只限于Activity被销毁后马上被恢复的情况。

 

更常用的方式是阻止Activity的销毁和重新启动。需要首先在AndroidManifest.xml中给相应的Activity加一个属性。

 

 

android:configChanges="keyboardHidden|orientation"

 

然后再程序中截获 onConfigurationChanged(Configuration newConfig) 函数并且自己加以处理,这时候屏幕方向的切换不会重新启动Activity。必要的时候可以根据屏幕方向的不同重新布置布局。

 

 

 

public void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {    setupLandScapeViews();                }                 else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {    setupPortraitViews();                }}

 

 

如果不希望改变屏幕的显示方式,比如游戏中希望保持一种方式显示,可以在Activity中加一句

 

 

android:screenOrientation="portrait"

 

这样的话屏幕方向变化不会再改变显示方式和重启Activity。

 

 

原创粉丝点击