Как я могу запретить Android Activity кратковременно переходить в портретный режим, если у меня указан ландшафт?
Я указал, что моя активность должна быть привязана к ландшафту, который работает большую часть времени.В частности, когда Activity уже запущена, и я запускаю ее новый экземпляр из Eclipseдействие начинается в книжной ориентации и немедленно изменяется на альбомную - но не раньше, чем представлению уже было сказано, что это портретная деятельность.Таким образом, мой вид инициализируется как портрет, но сразу получает поверхность изменена.
В моем манифесте указано следующее:
<activity android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
Я также попробовал:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Когда я нацелился на уровень API 7, я считаю, что это работало нормально. Теперь я нацеливаюсь на API level8, и появилась странная причуда.
В методе oncreate значение:
getResources().getConfiguration().orientation
является:
Configuration.ORIENTATION_PORTRAIT
Сразу после создания действия, ориентация меняется на Пейзаж, я получаюsurfacechanged
и я могу все исправить. Но почему это всегда портрет?
Я подозреваю, что это связано с тем, что приложение автоматически запускается при запуске с портретного экрана. Кажется странным, что приложение, которое НИКОГДА не было указано в портретном режиме, запускается таким образом, а затем быстро изменяется.
Но есть ли способ не допустить, чтобы это было в портрете?
Я положил это в моей деятельностиonCreate
:
while (getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
Это привело к тому, что он застрял там навсегда :)