Wie deaktiviere ich den Querformatmodus in Android?


933

Wie kann ich den Querformatmodus für einige Ansichten in meiner Android-App deaktivieren?


3
Versuchen Sie im Wesentlichen, die Funktion zum automatischen Drehen zu deaktivieren? Versuchen Sie, Ihre bevorzugte Ausrichtung in Ihren Porträtansichten festzulegen? http://code.google.com/android/reference/android/R.styleable.html#AndroidManifestActivity_screenOrientation
Adam

Antworten:


1632

Fügen Sie android:screenOrientation="portrait"der Aktivität in der Datei AndroidManifest.xml hinzu. Zum Beispiel:

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

EDIT: Da dies eine sehr beliebte Antwort geworden ist, fühle ich mich sehr schuldig, da das Erzwingen von Porträts selten die richtige Lösung für die Probleme ist, auf die es häufig angewendet wird.
Die wichtigsten Vorbehalte mit erzwungenem Porträt:

  • Dies entbindet Sie nicht davon, über Ereignisse im Aktivitätslebenszyklus nachdenken oder den Status ordnungsgemäß speichern / wiederherstellen zu müssen. Neben der App-Rotation gibt es viele Dinge, die eine Zerstörung / Wiederherstellung von Aktivitäten auslösen können, einschließlich unvermeidbarer Dinge wie Multitasking. Es gibt keine Verknüpfungen. lernen, mit Bündeln und retainInstanceFragmenten umzugehen.
  • Denken Sie daran, dass es im Gegensatz zum ziemlich einheitlichen iPhone-Erlebnis einige Geräte gibt, bei denen das Hochformat nicht die eindeutig beliebte Ausrichtung ist. Wenn Benutzer auf Geräte mit Hardware-Tastaturen oder Gamepads sind a la das Nvidia - Schild, auf Chromebooks , auf Falt- oder auf Samsung DeX , Portrait zwingen kann Ihre App - Erfahrung entweder begrenzen oder einen riesigen Usability Ärger machen. Wenn Ihre App kein starkes UX-Argument hat, das zu einer negativen Erfahrung bei der Unterstützung anderer Orientierungen führen würde, sollten Sie die Landschaft wahrscheinlich nicht erzwingen. Ich spreche von Dingen wie "Dies ist eine Registrierkassen-App für ein bestimmtes Tablet-Modell, das immer in einem festen Hardware-Dock verwendet wird."

Daher sollten die meisten Apps nur die Telefonsensoren, die Software und die physische Konfiguration selbst entscheiden lassen, wie der Benutzer mit Ihrer App interagieren möchte. Einige Fälle, über die Sie möglicherweise noch nachdenken möchten, wenn Sie mit dem Standardverhalten der sensorOrientierung in Ihrem Anwendungsfall nicht zufrieden sind :

  • Wenn Ihr Hauptanliegen zufällige Orientierungsänderungen während der Aktivität sind, von denen Sie glauben, dass die Sensoren und die Software des Geräts nicht gut zurechtkommen (z. B. in einem auf Neigung basierenden Spiel), sollten Sie Quer- und Hochformat unterstützen, aber nosensorfür die Ausrichtung verwenden. Dies erzwingt Landschaft auf den meisten Tablets und Hochformat auf den meisten Handys, aber ich würde dies für die meisten "normalen" Apps immer noch nicht empfehlen (einige Benutzer geben einfach gerne das Querformat-Softkeyboard auf ihren Handys ein, und viele Tablet-Benutzer lesen Hochformat - und du solltest sie lassen).
  • Wenn Sie aus irgendeinem Grund immer noch ein Porträt erzwingen müssen, ist dies sensorPortraitmöglicherweise besser als portraitfür Android 2.3+. Dies ermöglicht ein auf dem Kopf stehendes Porträt, was bei der Verwendung von Tablets durchaus üblich ist.

54
Es ist möglich, dies für die gesamte App zu tun. Überprüfen Sie dies aus stackoverflow.com/a/9784269/1300707
Liam George Betsworth

1
Mir ist aufgefallen, dass es noch ein anderes Porträt gibt: sensorPortait. Was ist der Unterschied zwischen sensorPortait und Porträt?
Jacky

1
Wenn Sie die Dokumente von Google lesen : "Porträtausrichtung, kann jedoch je nach Gerätesensor entweder normal oder umgekehrt porträtiert werden. In API-Ebene 9 hinzugefügt." Also - das heißt - "Porträt, mit der rechten Seite nach oben oder auf dem Kopf, nur Android 2.3+."
Yoni Samlan

2
Wie ich in meiner Antwort unten bemerkt habe, ist "Nosensor" wahrscheinlich eine bessere Option, um einige Probleme zu umgehen.
Mike Weir

1
Ich muss sagen, dass ich nicht einverstanden bin. Nicht alle Erlebnisse sind mit dem Querformatmodus auf Telefonen kompatibel. Sie sollten also die UX entscheiden lassen, nicht die Sensoren. Dies ist bei Tablets jedoch nicht der Fall.
Renzo Tissoni

110

Der Dateischalter war mir AndroidManifest.xmlerst beim Lesen dieses Beitrags bekannt, daher habe ich ihn in meinen Apps stattdessen verwendet:

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

9
Dies kann dazu führen, dass Ihre Aktivität beim ersten Laden springt, wenn sich das Gerät nicht in der angegebenen Ausrichtung befindet.
Dori

Ich habe diese Methode verwendet, sie in OnCreate aufgerufen und dann Daten aus einigen Asset-Dateien gelesen. Wenn ich die App mit einem Gerät im Querformat starten würde, würde sie sich drehen, aber dies würde aus irgendeinem seltsamen Grund dazu führen, dass diese Initialisierungs-Assets fälschlicherweise gelesen werden (sollte vielleicht warten, bis die Drehung abgeschlossen ist). Die Verwendung der XML-Alternative hat dieses Problem nicht verursacht.
Radu Simionescu

1
Dies kann ein Problem mit der Startsequenz für Android-Programme sein. Sie könnten versuchen, setRequestedOrientation () nach onResume () zu verschieben ???
Rich

45

Fügen Sie dies android:screenOrientation="portrait"in Ihre Manifestdatei ein, in der Sie Ihre Aktivität wie folgt deklarieren

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

Wenn Sie Java-Code verwenden möchten, versuchen Sie es

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

bevor Sie die setContentViewMethode für Ihre Aktivität in aufrufen onCreate().

Hoffe diese Hilfe und für alle leicht verständlich ...


29

Viele der Antworten hier schlagen vor, sie "portrait"in Ihrer AndroidManifest.xml-Datei zu verwenden. Dies scheint eine gute Lösung zu sein - aber wie in der Dokumentation angegeben, wählen Sie Geräte aus, die möglicherweise nur über eine Landschaft verfügen. Sie zwingen auch bestimmte Geräte (die im Querformat am besten funktionieren) dazu, im Hochformat zu arbeiten, ohne die richtige Ausrichtung zu erhalten.

Mein Vorschlag ist, "nosensor"stattdessen zu verwenden . Dadurch kann das Gerät seine bevorzugte Standardausrichtung verwenden, keine Käufe / Downloads bei Google Play blockieren und sicherstellen, dass der Sensor Ihr Spiel (in meinem Fall NDK) nicht durcheinander bringt.


Da viele dies abstimmen, möchte ich darauf hinweisen, dass ich seitdem andere Antworten gewählt habe, die "Porträt" vorschlagen, da bestimmte obskure Geräte tatsächlich unvorhersehbar reagieren, wenn sie eine In-App-Bildschirmrotation implementieren möchten, die zu einer Anforderung später für mich. Ich bezweifle auch, dass Apps mit "Hochformat" durch ein Google Play-Setup blockiert werden.
Mike Weir

Google Play filtert Apps nur im Hochformat auf Geräten nur im Querformat heraus (siehe Hinweis auf dieser Seite: developer.android.com/guide/topics/manifest/… ("Der von Ihnen angegebene Wert ermöglicht das Filtern nach Diensten wie Google) Spielen ")
miracle2k

14

Wenn Sie Benutzereinstellungen wünschen,

dann würde ich empfehlen setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Sie können die Einstellungen über ein Einstellungsmenü ändern.

Ich benötige dies, da meine Timer dem entsprechen müssen, was auf dem Bildschirm angezeigt wird. Durch Drehen des Bildschirms wird die aktuelle Aktivität zerstört.


14

Fügen Sie einfach Like this Line in Ihr Manifest ein

android: screenOrientation = "Porträt"

<manifest
    package="com.example.speedtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >


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

    </application>

</manifest>   

9

Sie können dies für Ihre gesamte Anwendung tun, ohne dass alle Ihre Aktivitäten eine gemeinsame Basisklasse erweitern müssen.

Der Trick besteht zunächst darin, sicherzustellen, dass Sie eine Anwendungsunterklasse in Ihr Projekt aufnehmen. In onCreate (), das beim ersten Start Ihrer App aufgerufen wird, registrieren Sie ein ActivityLifecycleCallbacks-Objekt (API-Level 14+), um Benachrichtigungen über Aktivitätslebenszyklusereignisse zu erhalten.

Dies gibt Ihnen die Möglichkeit, Ihren eigenen Code auszuführen, wenn eine Aktivität in Ihrer App gestartet (oder gestoppt oder fortgesetzt oder was auch immer) wird. Zu diesem Zeitpunkt können Sie setRequestedOrientation () für die neu erstellte Aktivität aufrufen.

Und vergessen Sie nicht, app: name = ". MyApp" in Ihre Manifestdatei aufzunehmen.

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);
            }
            ....
        });
    }
}

7

Verwenden Sie dies in onCreate () der Aktivität

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

7

Sie sollten android:screenOrientation="sensorPortrait"in AndroidManifest.xml ändern


6

Fügen Sie dieses Attribut einfach in Ihr Aktivitäts-Tag ein.

 android:screenOrientation="portrait"

6

Wenn Sie nicht die Mühe machen möchten, in jedem Manifest-Aktivitätseintrag eine bessere Orientierung hinzuzufügen, erstellen Sie eine BaseActivity-Klasse (erbt 'Activity' oder 'AppCompatActivity'), die von jeder Aktivität Ihrer Anwendung anstelle von 'Activity' geerbt wird 'oder' AppCompatActivity 'und fügen Sie einfach den folgenden Code in Ihre BaseActivity ein:

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

5

Fügen Sie android:screenOrientation="portrait"der Aktivität hinzu, die Sie im Querformat deaktivieren möchten.


5

Wenn Sie Landscape mode for your android app(oder eine einzelne Aktivität) deaktivieren möchten, müssen Sie lediglich Folgendes hinzufügen:

android:screenOrientation="portrait"zum Aktivitäts-Tag in der AndroidManifest.xmlDatei.

Mögen:

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

Ein anderer Weg, programmatischer Ansatz.

Wenn Sie dies programmatisch tun möchten, z. mit Java-Code. Sie können dies tun, indem Sie den folgenden Code in die Java-Klasse der Aktivität einfügen, die im Querformat nicht angezeigt werden soll.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Ich hoffe, es hilft Ihnen. Für weitere Details, die Sie hier besuchen können, geben Sie hier die Linkbeschreibung ein


2
Da so viele Antworten Ratschläge geben, die den guten Ratschlägen von @Phoenix und @Yoni widersprechen, denke ich, dass ein gutes Fazit darin besteht, zu wiederholen, was sie vorschlagen:android:screenOrientation="nosensor">
DSlomer64

1
@ DSlomer64 Ja. Wenn Sie mit Tablet-Geräten fertig werden möchten, sollten Sie den Nosensor-Wert anstelle des Porträts verwenden
IntelliJ Amiya

5

So ändern Sie die Ausrichtung in einigen Ansichten

Anstatt die Ausrichtung der gesamten Aktivität zu sperren, können Sie diese Klasse verwenden, um die Ausrichtung aus jeder Ihrer Ansichten pragmatisch dynamisch zu sperren: -

Machen Sie Ihre Ansicht Landschaft

OrientationUtils.lockOrientationLandscape(mActivity);

Machen Sie Ihre Ansicht Porträt

OrientationUtils.lockOrientationPortrait(mActivity);

Orientierung freischalten

OrientationUtils.unlockOrientation(mActivity);

Orientierungs-Util-Klasse

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

verwenden

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

4

Sie müssen die Ausrichtung jeder Aktivität festlegen.

<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

Klasse innerhalb der oncreate () -Methode hinzufügen

 setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

4

Wenn Sie Xamarin C # verwenden, funktionieren einige dieser Lösungen nicht. Hier ist die Lösung, die ich gefunden habe, um zu funktionieren.

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

Über der Klasse funktioniert gut, ähnlich wie bei den anderen Lösungen, auch nicht global anwendbar und muss in jedem Aktivitätsheader platziert werden.


4

Sie können Ihre bestimmte Aktivität zwingen, immer im Hochformat zu bleiben, indem Sie dies in Ihre manifest.xml schreiben

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

Sie können Ihre Aktivität auch zwingen, im Postrait-Modus zu bleiben, indem Sie die folgende Zeile in die onCreate () -Methode Ihrer Aktivität schreiben

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

}

3
<android . . . >
    . . .
    <manifest . . . >
        . . .
        <application>
            <activity android:name=".MyActivity" 
                android:screenOrientation="portrait" 
                android:configChanges="keyboardHidden|orientation">
            </activity>
        </application>
    </manifest>
</android>

3

Fügen Sie unten Lob zu Ihrem Projekt hinzu,

npm installieren

npm ich reagiere-native-Orientierung-Schließfach

Dann verwenden Sie eine Manifestklasse wie React_Native (Ihr Projektordner) / android / app / src / main / AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

<application
  android:name=".MainApplication"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:allowBackup="false"
  android:theme="@style/AppTheme">
  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:screenOrientation="landscape"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>

Vielen Dank!


2

In dem erstellten <apphome>/platform/androidVerzeichnis AndroidManifest.xml(Kopieren aus dem generierten). Fügen Sie dann ALLEN Aktivitätselementen android:screenOrientation=" portrait" hinzu.


2
 <?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>

Wir können die Aktivität im Hoch- oder Querformat einschränken, indem wir das Attribut oder android: screenOrientation verwenden.

Wenn wir mehr als eine Aktivität in meinem Programm haben, haben Sie die Freiheit, eine Aktivität in einem beliebigen Modus einzuschränken, und es wirkt sich niemals auf die anderen aus, die Sie nicht möchten.


2

Entweder in der Manifestklasse.

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

oder programmatisch

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Hinweis: Sie sollten dies vor der setContentViewMethode für Ihre Aktivität in aufrufen onCreate().


2

Fügen Sie android:screenOrientation="portrait"in AndroidManifest.xml Datei.

Beispielsweise :

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

1

In der Hoffnung, jemand anderem zu helfen, ist das folgende Attribut für die AKTIVITÄT in AndroidManifest.xml alles, was Sie benötigen:

android: configChanges = "Orientierung"

Also, voller Aktivitätsknoten:

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

Es gibt so viele Antworten, dass Sie mehr Informationen geben sollten, warum Sie Ihre verwenden sollten. Insbesondere in Dokumenten wird diese Option nicht verwendet: "Hinweis: Die Verwendung dieses Attributs sollte vermieden und nur als letzter Ausweg verwendet werden. Weitere Informationen zur ordnungsgemäßen Behandlung eines Neustarts aufgrund einer Konfigurationsänderung finden Sie unter Behandeln von Laufzeitänderungen." developer.android.com/guide/topics/manifest/…
Murmel

1

In Kotlin kann dasselbe programmatisch erreicht werden, indem unten verwendet wird

requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

1

Es hat bei mir funktioniert. Versuchen Sie, diesen Code in die AndroidManifest-Datei einzufügen

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

Ich wäre eine großartige Lösung gewesen, da Sie nicht pro Aktivität festlegen müssen. Funktioniert leider nicht in meiner App.
Myroslav Kolodii

1

Setzen Sie es in Ihr Manifest ein.

<activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="sensorPortrait" />

Die Ausrichtung ist im Hochformat, aber wenn das Telefon des Benutzers auf dem Kopf steht, zeigt es auch den richtigen Weg. (Ihr Bildschirm dreht sich also um 180 Grad).


Das System ignoriert dieses Attribut, wenn die Aktivität im Mehrfenstermodus ausgeführt wird .


0

Wenn sich Ihre Aktivität auf den ersten Status der Geräteorientierung bezieht, rufen Sie die aktuelle Geräteorientierung in der onCreateMethode ab und korrigieren Sie sie für immer:

        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);
        }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.