Вот такая ситуация:
У меня есть простое действие, которое меняет свое содержимое при изменении ориентации.
Мне нужна возможность принудительно изменять ориентацию (альбомная -> портретная, портретная -> альбомная) в ответ на нажатие какой-либо кнопки и после этого все еще обрабатывать изменения ориентации.
Я попытаюсь объяснить себя конкретным примером (который я хочу выполнить) -
Допустим, устройство находится в портретном режиме -> действие начинается в портретном режиме.
Теперь пользователь нажимает какую-то кнопку, которая в ответ переводит действие в альбомный режим.
Теперь пользователь поворачивает устройство в альбомный режим, НО с действием ничего не должно произойти, потому что действие было принудительно переведено в альбомный режим.
Теперь пользователь поворачивает устройство обратно в портретный режим, и действие снова переходит в портретный режим.
Итак, вот как я заставляю ориентироваться:
public void onButtonClick()
{
if (mLastOrientation == Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
else
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
}
А вот обработка смены ориентации:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
int currentOrientation = newConfig.orientation;
//
// Some UI changes according to orientation .............
//
mLastOrientation = currentOrientation;
// Here's where I'm allowing device orientation changes again
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
Проблема в том, что когда я вызываю setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED), активность возвращается к текущей ориентации устройства, что приводит к неправильной работе принудительной ориентации.
Есть идеи, как это решить?
заранее спасибо!