it-swarm.com.de

Wie kann ich die aktuelle Bildschirmausrichtung erhalten?

Ich möchte nur ein paar Flags setzen, wenn sich meine Orientierung im Querformat befindet, so dass ich, wenn die Aktivität in onCreate () neu erstellt wird, zwischen dem, was im Hoch- oder Querformat geladen werden soll, wechseln kann. Ich habe bereits ein Layout-Land-XML, das mein Layout verwaltet.

public void onConfigurationChanged(Configuration _newConfig) {

        if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            this.loadURLData = false;
        }

        if (_newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
            this.loadURLData = true;
        }

        super.onConfigurationChanged(_newConfig);
    }

Das Überschreiben von onConfigurationChanged verhindert, dass mein Layout-Land-XML in Querformat geladen wird.

Ich möchte nur die aktuelle Ausrichtung meines Geräts in onCreate () abrufen. Wie kann ich das bekommen?

167
Sheehan Alam
Activity.getResources().getConfiguration().orientation
421
EboMike
int orientation = this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
    // code for portrait mode
} else {
    // code for landscape mode
}

Wenn die Oberklasse von thisContext ist

53
Daniel

Bei einigen Geräten kann void onConfigurationChanged() abstürzen. Der Benutzer verwendet diesen Code, um die aktuelle Bildschirmausrichtung abzurufen. 

public int getScreenOrientation()
{
    Display getOrient = getActivity().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;
}

Und verwenden 

if (orientation==1)        // 1 for Configuration.ORIENTATION_PORTRAIT
{                          // 2 for Configuration.ORIENTATION_LANDSCAPE
   //your code             // 0 for Configuration.ORIENTATION_SQUARE
}
27
Sakthimuthiah
int rotation =  getWindowManager().getDefaultDisplay().getRotation();

Dies gibt alle Orientierung wie normal und umgekehrt

und damit umgehen 

int angle = 0;
switch (rotation) {
    case Surface.ROTATION_90:
        angle = -90;
        break;
    case Surface.ROTATION_180:
        angle = 180;
        break;
    case Surface.ROTATION_270:
        angle = 90;
        break;
    default:
        angle = 0;
        break;
}
20
AndroidBeginner
getActivity().getResources().getConfiguration().orientation

dieser Befehl gibt den Int-Wert 1 für Hochformat und 2 für Querformat zurück

12
Rudolf Coutinho

Falls jemand eine aussagekräftige Orientierungsbeschreibung erhalten möchte (wie diese an onConfigurationChanged(..) mit diesen reverseLandscape, sensorLandscape und so weiter), verwenden Sie einfach getRequestedOrientation()

5
a.ch.

Verwenden Sie in Ihrer Aktivitätsklasse die folgende Methode: 

 @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {

            setlogo();// Your Method
            Log.d("Daiya", "ORIENTATION_LANDSCAPE");

        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {

            setlogoForLandScape();// Your Method
            Log.d("Daiya", "ORIENTATION_PORTRAIT");
        }
    }

Wenn Sie dann erklären möchten, dass Ihre Aktivität eine Konfigurationsänderung vornimmt, bearbeiten Sie das entsprechende Element in Ihrer Manifestdatei, um das Android:configChanges-Attribut mit einem Wert aufzunehmen, der die Konfiguration darstellt, die Sie behandeln möchten. Mögliche Werte sind in der Dokumentation für das Android:configChanges-Attribut aufgeführt (die am häufigsten verwendeten Werte sind "Orientierung", um einen Neustart zu verhindern, wenn sich die Bildschirmausrichtung ändert, und "keyboardHidden", um einen Neustart zu verhindern, wenn sich die Tastaturverfügbarkeit ändert). Sie können mehrere Konfigurationswerte im Attribut deklarieren, indem Sie sie mit einer Pipe trennen Charakter.

<activity Android:name=".MyActivity"
          Android:configChanges="orientation|keyboardHidden"
          Android:label="@string/app_name">

Das ist alles!!

1

wenn Sie die onConfigurationChanged-Methode überschreiben möchten und trotzdem die grundlegenden Vorgänge ausführen möchten, sollten Sie super.onConfigyrationChanged () als erste Anweisung in der overriden-Methode verwenden.

0
Samarth S

Ich möchte nur eine Alternative vorschlagen, die einige von Ihnen betreffen wird:

Android:configChanges="orientation|keyboardHidden" 

impliziert, dass wir ausdrücklich angeben, dass das Layout eingefügt werden soll. 

Für den Fall, dass wir die automatische Injektion dank der Layout-Land- und Layout-Ordner beibehalten möchten. Sie müssen es nur noch zu onCreate hinzufügen:

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        getSupportActionBar().hide();

    } else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
        getSupportActionBar().show();
    }

Hier wird je nach Ausrichtung des Telefons die Aktionsleiste angezeigt oder nicht

0
Z3nk