2011-01-21 3 views
2

В настоящее время я работаю над Android-приложением, которое отличается поведением в зависимости от ориентации экрана.Android - руководство Ориентация экрана

Я использую getWindowManager(). GetDefaultDisplay(). GetRotation(), чтобы получить ориентацию экрана в методе onCreate() и управлять оттуда.

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

Я использую setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT), чтобы изменить ориентацию в Landscape. Проблема в том, что, используя это, я не могу вернуться к пейзажу. Если я использую setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) в onCreate(), проблема в том, что через несколько секунд переключается обратно в ландшафтный режим (так как экран все еще находится в ландшафте).

Есть ли другой способ управления этим? В принципе, есть ли способ уловить изменение ориентации экрана со списком (или где-нибудь еще, чем в onCreate, поскольку он не вызывается, когда представления заблокированы в портретном режиме)? Я ничего не могу найти об этом ...

Любая идея приветствуется!

Спасибо!

+0

Это может помочь: http://stackoverflow.com/questions/4349353/intent-for-screen-orientation-change/4349364#4349364 –

ответ

2

Почему бы не попробовать создать два макета, один в макете и один в макете-порту. Они будут автоматически применяться при изменении ориентации устройства.

Внутри каждого из них создайте два разных дочерних макета один для портретного вида и один для пейзажного вида и измените их видимость, чтобы отразить предпочтения пользователя.

Таким образом, вам не нужно обрабатывать изменение вращения вообще, позвольте Android управлять этим для вас, и вы просто управляете переопределением пользователя.