Frage Android - Landschaftsmodus deaktivieren?


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


796
2018-02-24 15:29


Ursprung


Antworten:


Hinzufügen android:screenOrientation="portrait" zu der Aktivität in der AndroidManifest.xml. Beispielsweise:

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

EDIT: Da dies eine super-populäre Antwort geworden ist, fühle ich mich sehr schuldig, da ein Porträtzwang 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 befreit Sie nicht davon, über Aktivitäten nachzudenken Lifecycle-Ereignisse oder ordnungsgemäß speichern / wiederherstellen Zustand. Es gibt genügend von Dinge neben App-Rotation, die eine Aktivität auslösen können Zerstörung / Erholung, einschließlich unvermeidbarer Dinge wie Multitasking. Es gibt keine Abkürzungen; lernen, Bündel zu verwenden und retainInstance Fragmente.
  • Denken Sie daran, dass es im Gegensatz zur ziemlich einheitlichen iPhone-Erfahrung viele Geräte gibt, bei denen das Porträt nicht die eindeutig beliebte Orientierung ist. Wenn sich Benutzer auf Geräten mit Hardware-Tastaturen oder Gamepads a la Droid 1-4, Xperia Play oder Nvidia Shield befinden, kann das Hochladen von Portraits Ihre App zu einem riesigen Usability-Problem machen (besonders auf dem Shield). Wenn Ihre App keinen extrem spezifischen Anwendungsfall hat, der zu einer negativen Erfahrung führen würde, um andere Orientierungen zu unterstützen, sollten Sie wahrscheinlich keine Landschaft erzwingen. Ich spreche über Dinge wie "Dies ist eine Fernbedienung App für ein Telefon mit einem IR-Blaster auf nur einer Seite des Geräts", oder "Dies ist eine Registrierkasse App für ein bestimmtes Modell von Tablet immer in einem festen verwendet Hardware-Dock. "

Daher sollten die meisten Apps die Sensoren, die Software und die physische Konfiguration des Telefons so konfigurieren, dass sie selbst entscheiden, wie der Benutzer mit Ihrer App interagieren möchte. In einigen Fällen möchten Sie vielleicht noch darüber nachdenken, wenn Sie mit dem Standardverhalten von nicht zufrieden sind sensor Orientierung in Ihrem Anwendungsfall:

  • Wenn Ihr Hauptanliegen zufällige Orientierungsänderungen während der Aktivität sind, von denen Sie denken, dass die Sensoren und die Software des Geräts nicht gut zurechtkommen (z. B. in einem auf Neigungen basierenden Spiel), sollten Sie Landschafts- und Porträtaufnahmen unterstützen nosensor für die Orientierung. Dies zwingt Landschaften auf den meisten Tablets und Porträts auf den meisten Handys, aber ich würde es immer noch nicht für die meisten "normalen" Apps empfehlen (manche Benutzer tippen einfach das Landscape-Softkeyboard auf ihren Smartphones und viele Tablet-Benutzer lesen im Portrait - und Sie sollten sie lassen).
  • Wenn du immer noch müssen aus irgendeinem Grund Porträt zwingen sensorPortrait kann besser sein als portrait für Android 2.3 und höher; Dies ermöglicht ein auf den Kopf gestelltes Porträt, was in der Tablet-Nutzung durchaus üblich ist.

1401
2018-02-24 17:04



Mir war das nicht bewusst AndroidManifest.xml Datei wechseln, bis ich diesen Beitrag gelesen habe, also habe ich in meinen Apps stattdessen diesen verwendet:

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

97
2017-10-18 14:53



Füge das hinzu android:screenOrientation="portrait" in Ihrer Manifest-Datei, in der Sie Ihre Aktivität so deklarieren

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

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

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

bevor du anrufst setContentView Methode für Ihre Aktivität in onCreate().

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


32
2017-09-27 09:47



Viele der Antworten hier schlagen vor zu verwenden "portrait"in Ihrer AndroidManifest.xml-Datei. Dies mag wie eine gute Lösung erscheinen - aber wie in der Dokumentation erwähnt, werden Sie Geräte auswählen, die möglicherweise nur Landscape haben. Sie zwingen auch bestimmte Geräte (die am besten in der Landschaft funktionieren), ins Hochformat zu gehen, ohne die richtige Ausrichtung zu erhalten.

Mein Vorschlag ist zu verwenden "nosensor" stattdessen. Dadurch behält das Gerät seine voreingestellte bevorzugte Ausrichtung bei, blockiert keine Einkäufe / Downloads bei Google Play und stellt sicher, dass der Sensor nicht Ihr (NDK, in meinem Fall) Spiel durcheinanderbringt.


19
2017-08-21 14:41



Wenn Sie Benutzereinstellungen wünschen,

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

Sie können die Einstellungen in einem Einstellungsmenü ändern.

Ich benötige dies, weil meine Timer dem entsprechen müssen, was auf dem Bildschirm ist, und das Drehen des Bildschirms wird die aktuelle Aktivität zerstören.


9
2018-02-10 04:46



Füge einfach diese Zeile in deinem Manifest hinzu

android: screenOrientation = "Porträt"

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

    <uses-sdk
        android:minSdkVersion="8" />

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

        <activity
            android:name="MainActivity"
            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>

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

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

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

    </application>

</manifest>   

8
2018-02-05 09:30



Fügen Sie dieses Attribut einfach in Ihrem Aktivitäts-Tag hinzu.

 android:screenOrientation="portrait"

5
2017-10-01 07:00



du solltest dich ändern android:screenOrientation="sensorPortait" in AndroidManifest.xml


5
2018-01-03 06:04



Verwenden Sie dies in onCreate () der Aktivität

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

5
2018-05-06 09:59