2012-02-16 4 views
3

У меня есть активность, которая всегда должна запускаться в ландшафтном режиме. В моем методе onCreate() я использую размеры экрана (ширина и высота) для настройки интерфейса, поэтому важно, чтобы изначально не было создано действие с неправильной ориентацией.Формирование ландшафтного режима на планшете

Чтобы сделать это, я следующий в манифесте:

<activity android:name="app.myapp.WideActivity" 
    android:screenOrientation="landscape" 
    android:configChanges="keyboardHidden|orientation" 
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>    

Это, кажется, работает вполне нормально на моем телефоне, но на моем планшете (Galaxy Tab, Samsung, Android 3.1) деятельность запускается в портретный режим и ориентация переключателей почти сразу (после метода onCreate() - кажется). На моем телефоне (Android 2.3) экран уже является ландшафтом до вызова метода onCreate().

Ввод setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); в метод onCreate(), похоже, не помогает. Как я могу достичь того, что я пытаюсь сделать?

ответ

0

Я не уверен, что вы можете исправить точную проблему. Мне кажется, что проблема заключается в реализации частью управления работой/обработкой окон в Samsung. Однако вы можете попытаться предотвратить появление дрянного пользовательского интерфейса, задерживая рендеринг.

В onCreate() отображается макет по умолчанию - просто черная макет, растянутый на весь экран. В onResume() проверьте ориентацию экрана, если это не пейзаж, вы отправляете задержанную runnable, которая будет применять ваш макет (setContentView (my_UI)). Внутри runnable вы также проверяете, является ли ориентация экрана ландшафтом, и повторно запустите runnable, если ориентация по-прежнему остается портретной, в противном случае установите пользовательский интерфейс.

+0

Спасибо за ответ. Это похоже на странное поведение, похоже, правильно, но не пейзаж. Я думаю, что для моего приложения я могу просто проверить ориентацию и поменять значения высоты и ширины, если это необходимо. Это делает отображение активности корректным. –

+0

На самом деле, теперь я думаю об этом, если мне нужно удалить ориентацию 'configChanges =", метод onCreate() будет вызываться снова, когда устройство переключит ориентацию, и пользовательский интерфейс исправит себя. Также можно добавить проверку в метод onCreate и не рисовать пользовательский интерфейс вообще в портретном режиме –

Смежные вопросы