Überprüfen Sie die Ausrichtung auf dem Android-Telefon

Lesezeit: 6 Minuten

Wie kann ich überprüfen, ob sich das Android-Telefon im Quer- oder Hochformat befindet?

  • Sehen Sie sich diese Antwort in einem ähnlichen Thread an: stackoverflow.com/a/26601009/3072449

    – Zauberhände Pellegrin

    28. Oktober 2014 um 5:15 Uhr

  • Warum fügen Sie nicht einfach ein Kotlin-Tag hinzu, um es bei Suchen mit dem Schlüsselwort Kotlin einfacher zu finden?

    – Harsch

    3. Juli 2021 um 20:00 Uhr

Uberprufen Sie die Ausrichtung auf dem Android Telefon
hackbod

Die aktuelle Konfiguration, die verwendet wird, um zu bestimmen, welche Ressourcen abgerufen werden sollen, ist im Ressourcenverzeichnis verfügbar. Configuration Objekt:

getResources().getConfiguration().orientation;

Sie können die Orientierung überprüfen, indem Sie sich den Wert ansehen:

int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
    // In landscape
} else {
    // In portrait
}

Weitere Informationen finden Sie in der Android-Entwickler.

  • Oh, Entschuldigung, ich habe es falsch verstanden, ich dachte, Sie sagten, dass der Dienst die Konfigurationsänderung nicht sehen würde, wenn sich die Konfiguration ändert. Was Sie beschreiben, ist, dass … nun, es wird nichts angezeigt, weil sich nichts ändert, weil der Launcher die Bildschirmausrichtung gesperrt hat und keine Änderung zulässt. Es ist also richtig, dass sich .orientation nicht ändert, weil sich die Orientierung nicht geändert hat. Der Bildschirm ist immer noch im Hochformat.

    – Hackbod

    23. Februar 2012 um 8:32 Uhr


  • Das Nächste, was ich tun kann, ist, die Ausrichtung von den Sensoren abzulesen, was Mathematik beinhaltet, auf die ich im Moment nicht wirklich scharf bin.

    – Archimedes Trajano

    23. Februar 2012 um 18:21 Uhr

  • Es gibt nichts zu ärgern. Der Bildschirm hat sich nicht gedreht, er ist immer noch im Hochformat, es ist keine Drehung zu sehen. Wenn Sie überwachen möchten, wie der Benutzer sein Telefon bewegt, unabhängig davon, wie der Bildschirm gedreht wird, müssen Sie den Sensor direkt beobachten und entscheiden, wie Sie die Informationen interpretieren möchten, die Sie über die Bewegung des Geräts erhalten.

    – Hackbod

    24. Februar 2012 um 4:30 Uhr

  • Dies schlägt fehl, wenn die Bildschirmausrichtung festgelegt ist.

    – Johannes

    30. Juli 2013 um 14:27 Uhr

  • Wenn die Aktivität die Anzeige sperrt (android:screenOrientation="portrait"), gibt diese Methode denselben Wert zurück, unabhängig davon, wie der Benutzer das Gerät dreht. In diesem Fall würden Sie den Beschleunigungsmesser oder den Schwerkraftsensor verwenden, um die richtige Ausrichtung herauszufinden.

    – Katze

    21. August 2014 um 23:08 Uhr

1646253426 105 Uberprufen Sie die Ausrichtung auf dem Android Telefon
Jarek Potiuk

Wenn Sie getResources().getConfiguration().orientation auf einigen Geräten verwenden, werden Sie es falsch machen. Wir haben diesen Ansatz ursprünglich in verwendet http://apphance.com. Dank der Remote-Protokollierung von Apphance konnten wir es auf verschiedenen Geräten sehen und wir sahen, dass die Fragmentierung hier eine Rolle spielt. Ich habe seltsame Fälle gesehen: zum Beispiel abwechselnd Hochformat und Quadrat (?!) Auf dem HTC Desire HD:

CONDITION[17:37:10.345] screen: rotation: 270 orientation: square
CONDITION[17:37:12.774] screen: rotation: 0 orientation: portrait
CONDITION[17:37:15.898] screen: rotation: 90
CONDITION[17:37:21.451] screen: rotation: 0
CONDITION[17:38:42.120] screen: rotation: 270 orientation: square

oder überhaupt keine Orientierungsänderung:

CONDITION[11:34:41.134] screen: rotation: 0
CONDITION[11:35:04.533] screen: rotation: 90
CONDITION[11:35:06.312] screen: rotation: 0
CONDITION[11:35:07.938] screen: rotation: 90
CONDITION[11:35:09.336] screen: rotation: 0

Andererseits sind width() und height() immer korrekt (sie werden vom Fenstermanager verwendet, also sollte es besser sein). Ich würde sagen, die beste Idee ist, die Breite/Höhe IMMER zu überprüfen. Wenn Sie einen Moment darüber nachdenken, ist das genau das, was Sie wollen – zu wissen, ob die Breite kleiner als die Höhe ist (Hochformat), das Gegenteil (Querformat) oder ob sie gleich sind (Quadrat).

Dann kommt es auf diesen einfachen Code an:

public int getScreenOrientation()
{
    Display getOrient = getWindowManager().getDefaultDisplay();
    int orientation = Configuration.ORIENTATION_UNDEFINED;
    if(getOrient.getWidth()==getOrient.getHeight()){
        orientation = Configuration.ORIENTATION_SQUARE;
    } else{ 
        if(getOrient.getWidth() < getOrient.getHeight()){
            orientation = Configuration.ORIENTATION_PORTRAIT;
        }else { 
             orientation = Configuration.ORIENTATION_LANDSCAPE;
        }
    }
    return orientation;
}

  • Danke! Das Initialisieren von “Orientierung” ist jedoch überflüssig.

    – Herr Maffen

    1. Oktober 2014 um 14:53 Uhr

  • getWidth und getHeight sind nicht veraltet.

    – FindOut_Quran

    21. Oktober 2015 um 4:28 Uhr

  • @ user3441905, ja, das sind sie. Verwenden getSize(Point outSize) stattdessen. Ich verwende API23.

    – Windreiter

    2. Dezember 2015 um 11:13 Uhr


  • @jarek-potiuk es ist veraltet.

    – Hades

    18. Mai 2016 um 1:19 Uhr


Uberprufen Sie die Ausrichtung auf dem Android Telefon
Paul

Eine andere Möglichkeit, dieses Problem zu lösen, besteht darin, sich nicht auf den korrekten Rückgabewert der Anzeige zu verlassen, sondern sich auf die Auflösung der Android-Ressourcen zu verlassen.

Erstellen Sie die Datei layouts.xml in den Ordnern res/values-land und res/values-port mit folgendem Inhalt:

res/values-land/layouts.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="is_landscape">true</bool>
</resources>

res/values-port/layouts.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="is_landscape">false</bool>
</resources>

In Ihrem Quellcode können Sie nun wie folgt auf die aktuelle Ausrichtung zugreifen:

context.getResources().getBoolean(R.bool.is_landscape)

  • Ich mag das, da es die Art und Weise nutzt, wie das System bereits die Orientierung bestimmt

    – KrustyGString

    29. September 2015 um 13:59 Uhr

  • Beste Antwort für Quer-/Hochformat-Check!

    – vtlinh

    3. August 2016 um 19:02 Uhr

  • Was wird sein Wert in der Standardwertdatei sein?

    – Shashank Mishra

    26. Februar 2020 um 17:20 Uhr

1646253427 754 Uberprufen Sie die Ausrichtung auf dem Android Telefon
Nguyen Minh Binh

Eine vollständige Möglichkeit, die aktuelle Ausrichtung des Telefons anzugeben:

public String getRotation(Context context) {
    final int rotation = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
    switch (rotation) {
        case Surface.ROTATION_0:
            return "portrait";
        case Surface.ROTATION_90:
            return "landscape";
        case Surface.ROTATION_180:
            return "reverse portrait";
        default:
            return "reverse landscape";
    }
}

1646253427 486 Uberprufen Sie die Ausrichtung auf dem Android Telefon
NguyenDat

Hier ist eine Code-Snippet-Demo, wie Sie die Bildschirmausrichtung erhalten, die von Hackbod und Martijn empfohlen wurde:

❶ Auslösen bei Änderung der Ausrichtung:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
        int nCurrentOrientation = _getScreenOrientation();
    _doSomeThingWhenChangeOrientation(nCurrentOrientation);
}

❷ Holen Sie sich aktuelle Orientierung, wie Hackbod empfiehlt:

private int _getScreenOrientation(){    
    return getResources().getConfiguration().orientation;
}

❸Es gibt alternative Lösungen, um die aktuelle Bildschirmausrichtung zu erhalten. ❷ Folgen Sie der Martijn-Lösung:

private int _getScreenOrientation(){
        Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
        return display.getOrientation();
}

Notiz: Ich habe versucht, sowohl ❷ als auch ❸ zu implementieren, aber bei RealDevice (NexusOne SDK 2.3) Orientation gibt es die falsche Ausrichtung zurück.

★Also ich gebrauchte Lösung empfehlen ❷ um eine Bildschirmorientierung zu erhalten, die mehr Vorteile hat: klar, einfach und funktioniert wie ein Zauber.

★Überprüfen Sie sorgfältig die Rückkehr der Ausrichtung, um sicherzustellen, dass sie wie erwartet korrekt ist (kann je nach Spezifikation des physischen Geräts begrenzt sein)

Hoffe es hilft,

Uberprufen Sie die Ausrichtung auf dem Android Telefon
Taryn

int ot = getResources().getConfiguration().orientation;
switch(ot)
        {

        case  Configuration.ORIENTATION_LANDSCAPE:

            Log.d("my orient" ,"ORIENTATION_LANDSCAPE");
        break;
        case Configuration.ORIENTATION_PORTRAIT:
            Log.d("my orient" ,"ORIENTATION_PORTRAIT");
            break;

        case Configuration.ORIENTATION_SQUARE:
            Log.d("my orient" ,"ORIENTATION_SQUARE");
            break;
        case Configuration.ORIENTATION_UNDEFINED:
            Log.d("my orient" ,"ORIENTATION_UNDEFINED");
            break;
            default:
            Log.d("my orient", "default val");
            break;
        }

1646253428 162 Uberprufen Sie die Ausrichtung auf dem Android Telefon
Gemeinschaft

Einige Zeit ist vergangen, seit die meisten dieser Antworten gepostet wurden, und einige verwenden jetzt veraltete Methoden und Konstanten.

Ich habe Jareks Code aktualisiert, um diese Methoden und Konstanten nicht mehr zu verwenden:

protected int getScreenOrientation()
{
    Display getOrient = getWindowManager().getDefaultDisplay();
    Point size = new Point();

    getOrient.getSize(size);

    int orientation;
    if (size.x < size.y)
    {
        orientation = Configuration.ORIENTATION_PORTRAIT;
    }
    else
    {
        orientation = Configuration.ORIENTATION_LANDSCAPE;
    }
    return orientation;
}

Beachten Sie, dass der Modus Configuration.ORIENTATION_SQUARE wird nicht mehr unterstützt.

Ich habe festgestellt, dass dies auf allen Geräten, auf denen ich es getestet habe, zuverlässig ist, im Gegensatz zu der Methode, die die Verwendung von vorschlägt getResources().getConfiguration().orientation

  • Beachten Sie, dass getOrient.getSize(size) 13 API-Level erfordert

    – Lester

    24. September 2015 um 15:07 Uhr

915910cookie-checkÜberprüfen Sie die Ausrichtung auf dem Android-Telefon

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy