Jak Mogę uzyskać bieżącą orientację ekranu?

Chcę tylko ustawić kilka flag, gdy moja orientacja jest w krajobrazie, aby po odtworzeniu aktywności w OnCreate() móc przełączać między tym, co ładować w pionie a w krajobrazie. Mam już layout-land xml, który obsługuje mój układ.

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

Over-riding onConfigurationChanged uniemożliwi Ładowanie mojego layout-land xml w orientacji poziomej.

Chcę tylko sprawdzić aktualną orientację mojego urządzenia w OnCreate (). Jak mogę to dostać?

Author: Sheehan Alam, 2010-09-08

8 answers

Activity.getResources().getConfiguration().orientation
 404
Author: EboMike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-03 18:00:17
int orientation = this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
    // code for portrait mode
} else {
    // code for landscape mode
}

Gdy nadklasa this wynosi Context

 47
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-08 17:55:11

W niektórych urządzeniach void onConfigurationChanged() może ulec awarii. Użytkownik użyje tego kodu, aby uzyskać bieżącą orientację ekranu.

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

I używać

if (orientation==1)        // 1 for Configuration.ORIENTATION_PORTRAIT
{                          // 2 for Configuration.ORIENTATION_LANDSCAPE
   //your code             // 0 for Configuration.ORIENTATION_SQUARE
}
 27
Author: Sakthimuthiah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-30 08:54:54
int rotation =  getWindowManager().getDefaultDisplay().getRotation();

To da wszystkie orientację jak normalna i odwrotna

I zajmij się tym jak

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;
}
 18
Author: AndroidBeginner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-13 07:17:53
getActivity().getResources().getConfiguration().orientation

To polecenie zwraca wartość int 1 dla portretu i 2 dla krajobrazu

 12
Author: Rudolf Coutinho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-05 06:35:28

W przypadku, gdyby ktoś chciał uzyskać sensowny Opis orientacji (taki jak przekazywany do {[0] } z tymi reverseLandscape, sensorLandscape i tak dalej), wystarczy użyć getRequestedOrientation()

 5
Author: a.ch.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-20 13:30:40

W klasie aktywności użyj poniższej metody:

 @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");
        }
    }

Następnie, aby zadeklarować, że Twoja aktywność obsługuje zmianę konfiguracji, edytuj odpowiedni element w pliku manifestu, aby zawierał atrybut android:configChanges z wartością, która reprezentuje konfigurację, którą chcesz obsłużyć. Możliwe wartości są wymienione w dokumentacji atrybutu android:configChanges (najczęściej używanymi wartościami są "orientation", aby zapobiec ponownemu uruchomieniu po zmianie orientacji ekranu i "keyboardHidden", aby zapobiec uruchamia się ponownie po zmianie dostępności klawiatury). Możesz zadeklarować wiele wartości konfiguracyjnych w atrybucie, oddzielając je za pomocą potoku | znaku.

<activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden"
          android:label="@string/app_name">
To wszystko!!
 1
Author: DalveerSinghDaiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-16 07:13:03

Jeśli chcesz nadpisać tę metodę onConfigurationChanged i nadal chcesz, aby robiła podstawowe rzeczy, rozważ użycie super.onConfigyrationChanged () jako pierwsze polecenie w nadpisanej metodzie.

 0
Author: Samarth S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-14 11:52:24