Обнаружение зеркальных изменений ориентации в android

Обычно вращающееся устройство на 90 градусов (портретное или альбомное) вызывает изменение конфигурации, активность уничтожается и воссоздается и т. Д., Поэтому он может просто сохранить значение Display.getRotation() при запуске и работать с ним.

Однако при повороте устройства непосредственно от 0 до 180 (портретный портрет) или от 90 до 270 (пейзаж до пейзажа) изменение конфигурации не выполняется, устройство просто переназначает экран. Это имеет смысл, поскольку соотношение сторон макета не изменяется и его не нужно изменять. Но это делает невозможным, чтобы Activity обнаруживала, когда происходят такие изменения, т. Surface.ROTATION_90 Когда Surface.ROTATION_90 отправился на Surface.ROTATION_270 и т. Д.

Помимо опроса Display.getRotation() , есть ли лучший способ обнаружить это изменение?

Вы можете использовать вспомогательный класс OrientationEventListener .

Что-то вроде этого:

 public void onOrientationChanged(int orientation) { if (orientation == ORIENTATION_UNKNOWN) return; int rotation = activity.getWindowManager().getDefaultDisplay() .getRotation(); int degrees = 0; switch (rotation) { case Surface.ROTATION_0: .... case Surface.ROTATION_90: .... case Surface.ROTATION_180: ..... case Surface.ROTATION_270: ..... } } 
Intereting Posts
Genymotion player.exe перестает работать Потерянный appCache от Android 4.4 WebView Создание плагина helloWorld для Android с использованием Cordova и Eclipse Android USB API: переключение между загрузкой и отправкой данных <Animated-vector> требуется уровень API 21 (текущий минимум равен 15) Ошибка теста блока привязки к андроидной ошибке Не удалось проанализировать параметры компилятора привязки данных. Params: Проблема с полем пароля android, а не скрытие последнего введенного символа Parse + Robolectric вызывает java.lang.VerifyError: Плохой тип в стеке операнда Передовые методы фрагментации Пользовательский атрибут, импортированный из другого проекта Android Внедрение и дизайн приложений для Android для телевизора Как использовать ADB для отправки сенсорных событий на устройство с помощью команды sendevent? Приложение для мобильного телефона Android с Delphi или Lazarus Java.lang.SecurityException: требуется разрешение BLUETOOTH: ни пользователь 10065, ни текущий процесс не имеет android.permission.BLUETOOTH Как эффективно масштабировать видеокадр с помощью NDK