Ориентация экрана и значения в 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. Чтобы предотвратить это, мы должны обрабатывать любые изменения в конфигурации.