您的位置:首页 > 移动开发 > Android开发

A​n​d​r​o​i​d​屏​幕​旋​转处理,保持Activity内容

2014-07-18 10:34 316 查看
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());


5.判断横竖屏

可以在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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android