У меня есть приложение, которое создает некоторый фоновой персонал. Когда работает фоновый режим, отображается прогресс, показывающий, что если устройство вращается в течение этого времени, активность «перезагружается», и я хочу этого избежать.Отключить и активировать изменения ориентации в действии в Android программно
По этой причине я решил отключить ориентацию во время этого процесса. Я видел разные темы для этого вопроса, но ни один из них не имеет правильного решения, по крайней мере, в моем случае.
Решения размещены около фиксируя ориентацию деятельности, но вы должны иметь дело с тем, что реверс ориентации не возвращается, если вы используете:
getResources().getConfiguration().orientation
Функция выше возвращает SCREEN_ORIENTATION_PORTRAIT как для портретной и REVERSE_PORTRAIT случаев (по крайней мере, в моих тестах).
Таким образом, в конце концов, я использовал значение вращения, чтобы справиться с этим, так что мой код «отключить вращение» является:
int rotation = getWindowManager().getDefaultDisplay().getRotation();
switch(rotation) {
case Surface.ROTATION_180:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
break;
case Surface.ROTATION_270:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
break;
case Surface.ROTATION_0:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
case Surface.ROTATION_90:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
}
И чтобы снова ориентацию:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
Это отлично работает на устройстве с Android 4.1.2, но на устройстве с Android 4.2.1 он работает не так, как ожидалось.
Я думаю, что управление поворотом в активном цикле активности должно быть распространенной проблемой, но я не смог найти подходящее решение. Может быть, я искал неправильное направление, поэтому любая помощь действительно приветствуется.
Заранее благодарен, Ivan.
Это на самом деле то, что вы хотите: вызов 'Screen.lockOrientation (this)' из https://github.com/delight-im/Android-BaseLib/blob/master/Source/src/im/delight/android/ baselib/Screen.java – caw