1.修改AndroidManifest.xml 在activity属性中加入:
android:configChanges=”orientation|keyboardHidden|screenSize" //3.2以上必须加此属性,不然还是会调用onCreate()。
android:configChanges,这个方法主要是负责列出清单,当清单上用户指定的设置改变时,Activity会自己处理这些变化。
orientation:屏幕界面旋转(可能是用户手动旋转的)。
screenSize:如果你的开发API等级等于或高于13,你还需要设置screenSize,因为screenSize会在屏幕旋转时改变。
keyboardHidden:键盘辅助功能改变。
AndroidManifest.xml代码:
<span style="font-family:Microsoft YaHei;font-size:12px;"><activity
android:name="com.Lee.eq.MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize" >
</activity></span>
2.在应用中固定屏幕方向。
在AndroidManifest.xml的activity中加入:android:screenOrientation=”landscape”属性即可(landscape是横向,portrait是纵向)。
3.在相对应的Activity中继承重写onConfigurationChanged方法,可判断当前屏幕朝向,监听屏幕变化以此做出响应。
@Override
public void onConfigurationChanged(Configuration newConfig) {
// 切换到了横屏
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
} else {
}
super.onConfigurationChanged(newConfig);
}
4.用onRetainCustomNonConfigurationInstance()方法来暂时保存数据。
@Override
public Object onRetainCustomNonConfigurationInstance() {
// TODO Auto-generated method stub
String kdInfoString = textViewRender.getText().toString();
return kdInfoString;
}
然后在对应的地方使用getLastCustomNonConfigurationInstance()获取数据。
textViewRender.setText((CharSequence) getLastCustomNonConfigurationInstance());
可以在onCreate()里判断横竖屏加载相应的XML视图文件
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// 横屏
setContentView(R.layout.activity_main_land);
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// 竖屏
setContentView(R.layout.activity_main);
}
}