Android: screenOrientation tag в приложении не работает

Тег android:screenOrientation при размещении в <application> не работает. Но когда я помещаю android:screenOrientation в тег <activity>, он работает.

Если тег android:screenOrientation работает в <application>, тогда не нужно было бы устанавливать обработку android:screenOrientation для каждого действия.

Интересно, почему в Android-платформе существует такое странное поведение для тега screenOrientation?

Ответ 1

Элемент <application> не поддерживает android:screenOrientation. Вы можете сказать это чтение документации.

Что касается того, почему он не поддерживается в элементе <application>, я думаю, что это, по крайней мере, частично, потому что вы не должны использовать его во многих действиях и, возможно, не во всех действиях.

Например, предлагаемый android:screenOrientation="portrait" просто не должен быть выполнен, почти всегда. landscape Я могу понять, для определенных видов деятельности (камеры, видеоплееры, некоторые игры). Но portrait означает:

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

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