Я могу идеально управлять изменениями ориентации программно, используя 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);
}
Итак, есть ли способ сказать андроиду, какой ориентацией он должен создать мою деятельность, прежде чем он ее создаст? (Но это не может быть явным)
Я решил это, установив screenOrientation в "за" в файле манифеста:
android:screenOrientation="behind"
Я решил это, используя это выражение в манифесте:
android:screenOrientation="locked"
о каждой активности, объявленной в манифесте с этой проблемой.
И продолжайте использовать setRequestedOrientation()
программно, чтобы определить, является ли ландшафтная или портретная ориентация внутри onCreate()
Надеюсь, это поможет кому-то,
setRequestedOrientation(ScreenOrientation);
послеsuper.onCreate(icicle);
И какую версию API вы используете?