Android - управление ориентацией экрана - PullRequest
2 голосов
/ 21 января 2011

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

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

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

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

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

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

Спасибо!

1 Ответ

2 голосов
/ 06 апреля 2011

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

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

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

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