Отключить ландшафтный режим в Android? - PullRequest
877 голосов
/ 24 февраля 2009

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

Ответы [ 32 ]

5 голосов
/ 16 августа 2013

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

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

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

5 голосов
/ 16 марта 2015

Если вы хотите отключить Landscape mode for your android app (или одно действие), все, что вам нужно сделать, это добавить,

android:screenOrientation="portrait" к тегу активности в файле AndroidManifest.xml.

Как:

<activity android:name="YourActivityName" 
    android:icon="@drawable/ic_launcher" 
    android:label="Your App Name" 
    android:screenOrientation="portrait">

Другой путь, программный подход.

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

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Надеюсь, это поможет вам. Для более подробной информации вы можете посетить здесь введите описание ссылки здесь

5 голосов
/ 26 января 2014

Добавьте android:screenOrientation="portrait" к мероприятию, которое вы хотите отключить в ландшафтном режиме.

4 голосов
/ 28 февраля 2017

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

Например:

 <activity android:name=".ui.activities.MainActivity"
  android:screenOrientation="portrait"></activity>
4 голосов
/ 20 марта 2016

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

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

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

4 голосов
/ 28 апреля 2016

Как изменить ориентацию в некоторых видах

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

Сделайте ваш взгляд Пейзаж

OrientationUtils.lockOrientationLandscape(mActivity);

Сделайте ваш взгляд Портрет

OrientationUtils.lockOrientationPortrait(mActivity);

Разблокировка Ориентация

OrientationUtils.unlockOrientation(mActivity);

Ориентация Util Class

import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Build;
import android.view.Surface;
import android.view.WindowManager;

/*  * This class is used to lock orientation of android app in nay android devices 
 */

public class OrientationUtils {
    private OrientationUtils() {
    }

    /** Locks the device window in landscape mode. */
    public static void lockOrientationLandscape(Activity activity) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
    }

    /** Locks the device window in portrait mode. */
    public static void lockOrientationPortrait(Activity activity) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

    /** Locks the device window in actual screen mode. */
    public static void lockOrientation(Activity activity) {
        final int orientation = activity.getResources().getConfiguration().orientation;
        final int rotation = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay()
                .getRotation();

        // Copied from Android docs, since we don't have these values in Froyo
        // 2.2
        int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8;
        int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9;

        // Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO
        if (!(Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO)) {
            SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
        }

        if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
            if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            } else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            }
        } else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
            if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT);
            } else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
                activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
            }
        }
    }

    /** Unlocks the device window in user defined screen mode. */
    public static void unlockOrientation(Activity activity) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
    }

}
4 голосов
/ 14 мая 2012

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

android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait" 
4 голосов
/ 02 января 2016

добавить класс внутри метода oncreate ()

 setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
4 голосов
/ 04 февраля 2015

Вы должны установить ориентацию каждого действия.

<activity
                android:name="com.example.SplashScreen2"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Black.NoTitleBar" >
            </activity>
            <activity
                android:name="com.example.Registration"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Black.NoTitleBar" >
            </activity>
            <activity
                android:name="com.example.Verification"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Black.NoTitleBar" >
            </activity>
            <activity
                android:name="com.example.WelcomeAlmostDone"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Black.NoTitleBar" >
            </activity>
            <activity
                android:name="com.example.PasswordRegistration"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Black.NoTitleBar" >
            </activity>
4 голосов
/ 12 мая 2017

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

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