创建memeber变量并保存当前的设置状态。 short is_landscape = -1;
oncheckedchange监听器,您可以永久设置您的状态并保存它。
if (is_landscape == -1) {
Configuration config_screen = getResources().getConfiguration();
int orientation = config_screen.orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(Configuration.ORIENTATION_LANDSCAPE);
is_landscape = 0;
} else {
setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT);
is_landscape = 1;
}
}
问题是,只要你旋转你的设备,它就会重新创建你的活动,这样你就失去了你的状态。所以只保存你的is_landscape变量
@Override
protected void onSaveInstanceState(Bundle outState) {
oustate.putExtra("last_state", is_landscape);
super.onSaveInstanceState(outState);
}
you can restore your position on on restore instance
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
is_landscape = savedInstanceState.getShort("last_state");
if (is_landscape == 0) {
setRequestedOrientation(Configuration.ORIENTATION_LANDSCAPE);
} else if (is_landscape == 1) {
setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT);
}
super.onRestoreInstanceState(savedInstanceState);
}
如果你不想保存和恢复实例,那么你可以使用。
机器人:configChanges =“方向”
在menifest文件时,它不会允许在改变你的设备的方向重新创建活动。
希望它能为你工作。
如果要检测相反的状态也可以使用
INT状态=(窗口管理器)getSystemService(WINDOW_SERVICE))getDefaultDisplay()getRotation()。
如果状态是Surface.ROTATION_0那么这将是肖像 如果状态是Surface.ROTATION_90那么这将是景观 如果状态是Surface.ROTATION_180那么这将是相反的肖像 如果状态是Surface.ROTATION_270那么它将成为反转景观
在Surface.ROTATION_0和Surface.ROTATION_180的情况下设置纵向。 在Surface.ROTATION_90和Surface.ROTATION_270的情况下设置横向。
您还可以设置旋转而不是方向,以便您的设备将处于旋转状态而不是定向状态。
你知道如何正确定位吗? – styanton 2012-04-25 06:00:33
'Display display =((WindowManager)getSystemService(WINDOW_SERVICE))。getDefaultDisplay(); int orientation = display。getOrientation();'// portrait = 1;景观= 2; – Pallavi 2012-04-25 06:29:10
@styanton接受正确的答案/哪些适合你。 – Pallavi 2012-04-25 06:48:15