Поворот экрана с помощью Display.getRotation () - PullRequest
2 голосов
/ 21 января 2011

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

Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
        int orientation = display.getRotation();
        if (orientation == 1) {
            /* The device is rotated to the left. */
            Log.v("Left", "Rotated Left");
        } else if (orientation == 3) {
            /* The device is rotated to the right. */
        Log.v("Right", "Rotated Right");
        } else { 

        }

Моя проблема в том, как перевернуть оси X и Y вида экрана в зависимости от обнаруженного вращения? Как мне их достать, чтобы обратить их вспять?

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Насколько я знаю, нет поддержки перевернутого макета до 2.3.Поэтому, если вы не рисуете экран с помощью пользовательского SurfaceView, я бы сказал, что вы не можете сделать это с помощью стандартных виджетов.В режиме просмотра поверхности вам просто нужно преобразовать весь холст перед его рендерингом.

Кроме того, вы должны использовать константы, чтобы узнать текущую ориентацию (без магических чисел), см. Конфигурацию документация API класса

if (orientation==Configuration.ORIENTATION_LANDSCAPE) 
1 голос
/ 30 ноября 2016

getRotation для класса 'Display' объяснено в https://developer.android.com/reference/android/view/Display.html#getRotation()

getRotation возвращает:

Surface.ROTATION_0 (no rotation),
Surface.ROTATION_90,
Surface.ROTATION_180,
or Surface.ROTATION_270.

Например, если устройство имеет естественно высокий экран, а пользователь повернулесли он находится в горизонтальной ориентации, возвращаемое здесь значение может быть либо Surface.ROTATION_90, либо Surface.ROTATION_270 в зависимости от направления его поворота.Угол поворота нарисованной графики на экране является противоположным направлением физического поворота устройства.Например, если устройство поворачивается на 90 градусов против часовой стрелки, для компенсации рендеринга будет поворачиваться на 90 градусов по часовой стрелке, и поэтому возвращаемое значение здесь будет Surface.ROTATION_90.

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