Ориентация экрана и значения в manifest.xml
Я хочу использовать все виды деятельности в своей форме в ландшафте или портрете.
Когда пользователь выбирает ориентацию - это действует для всех видов деятельности.
Пробовал с опцией "позади". По словам Google - ориентация будет зависеть от предыдущей активности.
В моем первом действии используйте setRequestedOrientation для установки выбранного из пользовательской ориентации.
Следующие действия должны следовать той же ориентации.
Должен ли я также поставить setRequestedOrientation в свой код? Или полагаться на параметр "позади" в манифесте? Включение setRequestedOrientation может быть причиной onCreate снова?
UPDATE:
Пробовал "портрет" и setRequestedOrientation() - resilt si onCreate вызывается 2 раза.
Проблема заключается в следующем действии → из-за "портрета" в первой активности - андроид начал следующую деятельность с той же ориентацией. Он игнорирует "ландшафтную" ориентацию, которую я установил: (
Ответы
Ответ 1
На данный момент я устанавливаю check on onCreate:
m_bSkip = (this.getRequestedOrientation() != MyApp.sInstance.GetScreenOrientation());
if (m_bSkip)
return;
Когда я вхожу в сцену и ориентация экрана не требуется - выйдите.
Когда я вхожу в onCreate и желательна ориентация экрана, продолжайте с инициализацией.
Это устраняет ситуацию, не требуя сохранения асинхронной задачи, связанной с активностью, и проверки новой активности.
Конечно, все функции: onStart, onResume, onPausde, onStop... должны проверить этот флаг, чтобы исключить исключение null-указателя.
Ответ 2
Если вы хотите иметь фиксированную ориентацию для своей деятельности, вы можете использовать -
Android: screenOrientation = "портрет" дел >
android:screenOrientation="sensorPortrait"
как атрибут этой активности в этом манифесте. Но если вы хотите установить ориентировочную рабочую среду в зависимости от предыдущей ориентации при запуске приложения, вам нужно проверить предыдущую ориентацию в onCreate()
, а затем установить там это значение программно там, используя setRequestedOrientation()
UPDATE:
Как указано в @s.co.tt, используйте android:screenOrientation="sensorPortrait"
для лучшей поддержки на планшетах.
Подробнее о различных значениях для android:screenOrientation
и о том, что каждый из них делает, посмотрите на документы:
https://developer.android.com/guide/topics/manifest/activity-element.html#screen
Ответ 3
<activity
android:name=".Android_mobile_infoActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Ответ 4
Сделайте это программно, например, в базовом классе Activity
Я пробовал работать с мобильным телефоном и планшетами. используйте любой портрет или пейзаж.
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//or
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
manifest.xml внутри тега приложения
<activity
android:name=".Login_Activity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
или
<activity
android:name=".Login_Activity"
android:label="@string/app_name"
android:screenOrientation="landscape" />
Ответ 5
Из моего опыта я бы рекомендовал setRequestedOrientation в каждом действии в методе onCreate, onCreate не будет вызываться снова безопасным.
Ответ 6
перейдите в Android Manifest editor, там вы увидите MainActivity.java
щелкните по нему, вправо - вы увидите новое окно: прокрутите вниз и выберите ориентацию выбора - "портрет"
Ответ 7
Чтобы обрабатывать изменения ориентации, добавьте следующую строку в AndroidManifest.xml
: android:configChanges="orientation|screenSize"
в теге <activity>
, как показано ниже: -
<application
android:allowBackup="true"
----------
---------- >
<activity android:name=".MainActivity"
android:configChanges="orientation|screenSize">
----------
</activity>
----------
</application>
Примечание. При изменении конфигурации, такой как orientation
, screenLayout
, screenSize
и т.д., активность перезапускается и вызывается метод onCreate
. Чтобы предотвратить это, мы должны обрабатывать любые изменения в конфигурации.