Создать переменную 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 состояние = (WindowManager) getSystemService (WINDOW_SERVICE)) getDefaultDisplay() getRotation()..;
, если состояние является Surface.ROTATION_0, то это будет портрет , если состояние Surface.ROTATION_90 тогда это будет пейзаж , если состояние Surface.ROTATION_180 тогда это будет обратный портрет , если состояние Surface.ROTATION_270 тогда это будет be reverse landscape
комплект портрет в случае Surface.ROTATION_0 и Surface.ROTATION_180. комплект пейзаж в случае Surface.ROTATION_90 и Surface.ROTATION_270.
Вы можете также установить поворот вместо ориентации, чтобы ваше устройство находилось во вращающемся состоянии вместо ориентированного состояния.
Знаете ли вы, как получить правильную ориентацию? – styanton
'Display display = ((WindowManager) getSystemService (WINDOW_SERVICE)). GetDefaultDisplay(); int ориентация = дисплей.getOrientation(); '// portrait = 1; пейзаж = 2; – Pallavi
@styanton принимает ответы, которые являются правильными/которые работают на вас. – Pallavi