setrequestedorientation - android:screenorientation="landscape"




Отключить ландшафтный режим в Android? (20)

add android: screenOrientation = "портрет" в файле AndroidManifest.xml. example <activity android:name=".MapScreen" android:screenOrientation="portrait"></activity>

Как отключить ландшафтный режим для некоторых видов в приложении для Android?


В <apphome>/platform/android создан AndroidManifest.xml (копирование его из сгенерированного). Затем добавьте android:screenOrientation= " portrait " для ВСЕХ элементов активности.


В надежде помочь кому-то еще, следующий атрибут в ACTIVITY в AndroidManifest.xml - это все, что вам нужно:

Android: configChanges = "ориентация"

Итак, полный узел активности:

<activity android:name="Activity1" 
    android:icon="@drawable/icon" 
    android:label="App Name" 
    android:configChanges="orientation">

Вы должны поместить этот код в файл манифеста .......

    <activity android:name=".SunderFlowersActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait">
        >
    </activity>

Вы можете заставить свою конкретную деятельность всегда оставаться в портретном режиме, написав это в своем манифесте. Xml

 <activity android:name=".MainActivity"
        android:screenOrientation="portrait"></activity>

Вы также можете заставить свою деятельность оставаться в режиме postrait, написав следующую строку в методе onCreate () вашей активности

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_layout);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

Вы можете сделать это для всего своего приложения, не делая все ваши действия, расширяя общий базовый класс.

Трюк сначала заключается в том, чтобы включить в свой проект подкласс приложения. В своем onCreate (), который вызывается при первом запуске вашего приложения, вы регистрируете объект ActivityLifecycleCallbacks (API уровня 14+) для получения уведомлений о событиях жизненного цикла активности.

Это дает вам возможность выполнять свой собственный код всякий раз, когда любая активность в вашем приложении запущена (или остановлена, или возобновлена, или что-то еще). На этом этапе вы можете вызвать setRequestedOrientation () для вновь созданной активности.

И не забудьте добавить app: name = ". MyApp" в ваш файл манифеста.

class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();  

        // register to be informed of activities starting up
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {

            @Override
            public void onActivityCreated(Activity activity, 
                                          Bundle savedInstanceState) {

                // new activity created; force its orientation to portrait
                activity.setRequestedOrientation(
                    ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            }
            ....
        });
    }
}

Добавьте следующий фрагмент в файл манифеста.

<activity android:name=".yourActivity"
          ....
          android:screenOrientation="portrait"/>

Это поддерживает только портретный режим


Добавьте этот android:screenOrientation="portrait" в вашем файле манифеста, где вы объявляете свою активность следующим образом:

<activity android:name=".yourActivity"
    ....
    android:screenOrientation="portrait" />

Если вы хотите использовать java-код, попробуйте

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

прежде чем вы setContentView метод setContentView для своей активности в onCreate() .

Надеюсь эта помощь и легко понятна для всех ...


Если вы используете Xamarin C #, некоторые из этих решений не будут работать. Вот решение, которое я нашел для работы.

[Activity(MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.Portrait)]

Над классом хорошо работает, аналогично другим решениям, также не применимым в глобальном масштабе и необходимо размещать в каждом заголовке деятельности.


Если вы не хотите, чтобы вы столкнулись с необходимостью добавления ориентации в каждую манифестную запись активности, создайте класс BaseActivity (наследует «Activity» или «AppCompatActivity»), который будет наследоваться каждым действием вашего приложения, а не «Активность» 'или' AppCompatActivity 'и просто добавьте следующий код в свой BaseActivity:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    // rest of your code......
}

Используйте это в onCreate () действия

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Многие ответы здесь предлагают использовать "portrait" в вашем файле AndroidManifest.xml. Это может показаться хорошим решением, но, как отмечается в документации, вы выделяете устройства, которые могут иметь только ландшафт. Вы также заставляете определенные устройства (которые лучше всего работают в ландшафте) входить в портрет, не получая правильной ориентации.

Мое предложение состоит в том, чтобы вместо этого использовать "nosensor" . Это не позволит устройству использовать предпочтительную ориентацию по умолчанию, не будет блокировать покупки / загрузки в Google Play и будет гарантировать, что датчик не испортит вашу (NDK, в моем случае) игру.


Просто добавьте android: screenOrientation = "портрет" в тег активности в манифесте приложения.

Например:

    <activity android:name=".ui.activities.MainActivity"
       android:screenOrientation="portrait"></activity>

Просто добавьте этот атрибут в свой тег активности.

 android:screenOrientation="portrait"

Я не знал о переключении файла AndroidManifest.xml пока не прочитал этот пост, поэтому в моих приложениях я использовал это вместо этого:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);     //  Fixed Portrait orientation

вы должны изменить android:screenOrientation="sensorPortait" в AndroidManifest.xml


если ваша деятельность связана с первым состоянием ориентации устройства, получите текущую ориентацию устройства в методе onCreate а затем исправьте его навсегда:

        int deviceRotation = ((WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();

        if(deviceRotation == Surface.ROTATION_0) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        else if(deviceRotation == Surface.ROTATION_180)
        {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
        }
        else if(deviceRotation == Surface.ROTATION_90)
        {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
        else if(deviceRotation == Surface.ROTATION_270)
        {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
        }

использование

android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait" 

Добавить android:screenOrientation="portrait" для активности в AndroidManifest.xml. Например:

<activity android:name=".SomeActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait" />

EDIT: Поскольку это стало супер-популярным ответом, я чувствую себя очень виноватым, поскольку вынужденный портрет редко является правильным решением проблем, к которым он часто применяется.
Основные предостережения с принудительным портретом:

  • Это не освобождает вас от необходимости думать о событиях жизненного цикла активности или правильно сохранять / восстанавливать состояние. Существует множество вещей, помимо поворота приложения, которые могут вызвать разрушение / восстановление активности, в том числе неизбежные вещи, такие как многозадачность. Нет ярлыков; научиться использовать пачки и retainInstance фрагментыInstance.
  • Имейте в виду, что в отличие от довольно однородного опыта iPhone существует множество устройств, где портрет не является явно популярной ориентацией. Когда пользователи находятся на устройствах с аппаратными клавиатурами или игровыми площадками a la Droid 1-4, Xperia Play или Nvidia Shield, форсирование портрета может сделать ваше приложение гигантской непростой задачей (особенно на экране). Если ваше приложение не имеет особо конкретного варианта использования, который приведет к откровенному негативному опыту для поддержки других ориентаций, вы, вероятно, не должны форсировать пейзаж. Я говорю о таких вещах, как «это приложение для удаленного управления телефоном с ИК-бластером только на одной стороне устройства» или «это приложение для кассового аппарата для одной конкретной модели планшета, всегда используемой в фиксированном аппаратной док-станции ».

Таким образом, большинство приложений должно позволить датчикам, программному обеспечению и физической конфигурации телефона принимать собственное решение о том, как пользователь хочет взаимодействовать с вашим приложением. В некоторых случаях, о которых вы все еще можете подумать, если вас не устраивает поведение sensor по умолчанию в вашем случае использования:

  • Если ваша основная проблема связана с случайным изменением ориентации, то вы считаете, что датчики и программное обеспечение устройства плохо справляются (например, в игре с наклоном), рассматривая поддержку пейзажа и портрета, но используя nosensor для ориентации. Это накладывает пейзаж на большинство планшетов и портрет на большинстве телефонов, но я по-прежнему не рекомендую это для большинства «нормальных» приложений (некоторые пользователи просто набирают альбомную клавиатуру на своих телефонах, а многие пользователи планшетов читают в портретном и вы должны позволить им).
  • Если по какой-то причине вам по- прежнему нужно принудительно sensorPortrait , sensorPortrait может быть лучше, чем portrait для Android 2.3+; это позволяет перевернутый портрет, что довольно часто встречается в использовании планшета.

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="in.co.nurture.bajajfinserv">
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>


    <application

        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity" android:screenOrientation="portrait">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

мы можем ограничить действие в портретном или ландшафтном режиме, используя атрибут orroid: screenOrientation.

если у меня в моей программе более одного действия, то у вас есть свобода ограничивать любую деятельность в любом режиме, и она никогда не влияет на других, которых вы не хотите.





android-manifest