Android: установите ориентацию активности ДО создания, но не в манифесте (проблема с подключением HDMI)

1

Я могу идеально управлять изменениями ориентации программно, используя setRequestedOrientation в onCreate.

Все работает очень хорошо, пока я не подключу кабель HDMI. После этого планшет "хочет" находиться в ландшафтном режиме. Поэтому, когда я открываю действие, он показывает сначала в "пейзаже", а затем сразу после того, как он отображается в "портрет" (потому что я setRequestedOrientation(variable_with_orientation_desired_by_the_user) где variable=ActivityInfo.SCREEN_ORIENTATION_PORTRAIT в onCreate Как вы можете "видеть", мое приложение продолжает вращаться при каждой активности, которую открывает пользователь;

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

Я пробовал это, но без успеха:

@Override
public void onCreate(final Bundle saved)
{
    setRequestedOrientation(ScreenOrientation);
    super.onCreate(icicle);
}

Итак, есть ли способ сказать андроиду, какой ориентацией он должен создать мою деятельность, прежде чем он ее создаст? (Но это не может быть явным)

  • 0
    Дайте свой setRequestedOrientation(ScreenOrientation); после super.onCreate(icicle); И какую версию API вы используете?
  • 1
    ... Серьезно? Он просто сказал, что именно это приводит к нежелательному поведению (потому что действие создается, а затем только устанавливает ориентацию ПОСЛЕ того, как оно уже отображается).
Показать ещё 1 комментарий
Теги:
android-activity
orientation
android-orientation
screen-orientation

2 ответа

5
Лучший ответ

Я решил это, установив screenOrientation в "за" в файле манифеста:

        android:screenOrientation="behind"
  • 2
    Это не то, для чего этот метод. Пожалуйста, смотрите документы .
0

Я решил это, используя это выражение в манифесте:

android:screenOrientation="locked"

о каждой активности, объявленной в манифесте с этой проблемой.

И продолжайте использовать setRequestedOrientation() программно, чтобы определить, является ли ландшафтная или портретная ориентация внутри onCreate()

Надеюсь, это поможет кому-то,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню