Есть ли способ сделать "setRotation ()" с методом или кодом? - PullRequest
1 голос
/ 29 апреля 2011

Поэтому я хочу, чтобы мое приложение всегда привязывалось к естественной ориентации устройства. Так что, в основном, я хочу, чтобы поворот на 0 градусов Здесь есть getRotation() метод:

http://developer.android.com/reference/android/view/Display.html

Однако, нет setRotation (int вращение), который принял бы один из Surface.ROTATION_X параметров, найденных здесь: http://developer.android.com/reference/android/view/Surface.html

Итак, есть ли способ сделать это с помощью одной строки кода, которая всегда будет работать? Или это должно быть сделано с некоторым кодом?

Единственное, что я могу рассматривать как ручное решение, это следующее, но у меня есть некоторые опасения по этому поводу.

Я могу использовать display.getRotation(). Затем я проверю, 0 или 180 градусов, после этого я получу высоту и ширину дисплея и посмотрю, какой из них длиннее другого. Если окажется, что я нахожусь в ландшафтном режиме, то я буду знать, что естественная ориентация устройства - это альбомная ориентация, поэтому я могу установить его в альбомную ориентацию. Однако, если бы вращение было 270 или 90, то я знал бы, что естественная ориентация - портрет, и я мог бы установить его в портрет.

Однако меня беспокоит, где это сделать так, чтобы оно всегда работало. Допустим, пользователь поворачивает экран во время выполнения этого фрагмента кода, если устройство меняет ориентацию в промежутке времени, когда я использую метод getRotation(), и сравниваю ширину с высотой с помощью некоторых операторов if, а что нет, я думаю это может скинуть все. Что произойдет, если я введу это в onCreate() или onResume()? Возможно ли, что вещи могут выйти из-под контроля?

Возможно ли прерывание onCreate() или onResume() из-за переориентации экрана из-за того, что пользователь повернул устройство? Другая проблема заключается в том, что если вы перевернете устройство на 180 градусов, активность никогда не будет нарушена, поэтому я думаю, что поведение в этой ситуации может быть очень большим, будь то поворот на 90 градусов или поворот на 180 градусов.

1 Ответ

1 голос
/ 29 апреля 2011

Вы можете «установить» ориентацию экрана в манифесте. Смотрите здесь: http://developer.android.com/guide/topics/manifest/activity-element.html#screen

<activity
  android:name=".Activity"
  android:screenOrientation="portrait"
  android:theme="@style/Theme.D1" 
  android:label="@string/title_activity"/>

Значение, которое вы, вероятно, ищете; user - текущая предпочтительная ориентация пользователя. Тем не менее, я бы проверил это на нескольких тестах НТН!

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