Правильный способ блокировки ориентации экрана в разных версиях платформы - PullRequest
0 голосов
/ 25 июля 2011

Я понимаю, что это повторяющийся вопрос, но, начиная с Android 2.3+ (Gingerbread), окончательный ответ не был опубликован и принят.

У меня есть код, который возвращает текущую ориентацию экрана как на моем телефоне Froyo, так и на планшете Honeycomb. Мои вопросы:

  1. Из двух ориентаций, которые я получаю в версиях до Gingerbread, какой я должен использовать?
  2. Какие методы я должен использовать, чтобы установить ориентацию / вращение, чтобы зафиксировать его на месте?

Вот метод, который у меня есть сейчас (получение, но не установка)

protected void lockCurrentOrientation() {

    int orientation;
    Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD)
    {
        orientation = getResources().getConfiguration().orientation;
        Log.d(LogTag, "Orientation via getConfiguration " + String.valueOf(orientation));

        // Not working - reporting -1 (SCREEN_ORIENTATION_UNSPECIFIED)
        // orientation = getRequestedOrientation();
        // Log.d(LogTag, "Orientation via getRequestedOrientation " + String.valueOf(orientation));

        orientation = display.getOrientation();
        Log.d(LogTag, "Orientation via WindowManager " + String.valueOf(orientation));
    }
    else
    {
        orientation = display.getRotation();
        Log.d(LogTag, "Orientation via Display.getRotation " + String.valueOf(orientation));
    }
}

1 Ответ

0 голосов
/ 25 июля 2011

Если вы намереваетесь использовать более старые версии, используйте getOrientation (), а если вы хотите использовать более новые версии, используйте getRotation ().Под целью я подразумеваю все, что вы положили в целевой SDK в файле манифеста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...