Эмулятор в Android Studio не поворачивает экран при нажатии кнопки вращения — чаще всего причина в отключённом автоповороте внутри самой виртуальной системы Android, а не в сбое среды разработки. Кнопка Rotate на панели инструментов эмулятора лишь меняет положение «устройства», но если в настройках виртуального Android выключен Auto-rotate, интерфейс останется в портретной ориентации.
В этой статье разберём все способы поворота экрана: кнопки панели эмулятора, горячие клавиши, настройки автоповорота, а также программное управление ориентацией через манифест и код приложения. Материал подходит и для тех, кто тестирует своё приложение, и для тех, кто просто хочет зафиксировать экран в нужном положении.
Поворот экрана кнопками панели эмулятора
Самый быстрый способ — панель инструментов, которая появляется рядом с окном эмулятора. На ней есть две кнопки со стрелками: Rotate left и Rotate right. Одно нажатие поворачивает виртуальное устройство на 90 градусов в выбранную сторону.
Если панель инструментов скрыта, откройте меню эмулятора через три точки (Extended controls) или проверьте настройки отображения окна эмулятора в File → Settings → Tools → Emulator — там есть опция запуска эмулятора в отдельном окне с панелью управления.
- 🔄 Rotate left — поворот против часовой стрелки на 90°
- 🔁 Rotate right — поворот по часовой стрелке на 90°
- 📱 Повторное нажатие возвращает устройство в исходную ориентацию
- 🖥️ Поворот меняет и размер окна эмулятора на экране компьютера
Горячие клавиши для поворота
Для быстрого вращения без мыши используйте сочетания клавиш. В стандартной раскладке эмулятора поворот выполняется комбинацией Ctrl + стрелка влево или Ctrl + стрелка вправо (на macOS — с клавишей Cmd вместо Ctrl, точное сочетание зависит от версии среды).
Проверить актуальные сочетания можно в справке эмулятора: откройте Extended controls → Help → Keyboard shortcuts. Там перечислены все горячие клавиши конкретной версии, включая поворот, кнопки навигации и управление громкостью.
⚠️ Внимание: сочетания клавиш могут различаться между версиями Android Studio и операционными системами. Если стандартная комбинация не срабатывает, сверьтесь со списком горячих клавиш в разделе Help самого эмулятора.
Почему экран не поворачивается: включение автоповорота
Классическая ситуация: вы нажали Rotate, устройство «легло набок», но содержимое экрана осталось вертикальным. Это значит, что в системе виртуального устройства отключён автоповорот. Эмулятор имитирует реальный смартфон, а на нём вращение контролируется системной настройкой.
Порядок действий для включения автоповорота на виртуальном устройстве:
☑️ Включение автоповорота в эмуляторе
Также проверьте само приложение: некоторые программы принудительно фиксируют ориентацию через манифест, и никакие системные настройки их не повернут. Для проверки поверните экран на рабочем столе лаунчера или в системных настройках — если там вращение работает, ограничение заложено в конкретном приложении.
Программное управление ориентацией
Разработчику часто нужно не просто повернуть экран, а задать поведение приложения при смене ориентации. Основной инструмент — атрибут android:screenOrientation в файле AndroidManifest.xml внутри тега <activity>.
<activity
android:name=".MainActivity"
android:screenOrientation="portrait">
</activity>
Основные значения атрибута и их поведение:
| Значение | Поведение экрана |
|---|---|
portrait | Всегда вертикальная ориентация |
landscape | Всегда горизонтальная ориентация |
sensor | Поворот по данным датчика во все стороны |
unspecified | Система выбирает ориентацию сама |
user | Текущая ориентация, выбранная пользователем |
Изменить ориентацию можно и динамически из кода активности:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Нюанс для Android 8.0 и новее
На современных версиях Android комбинация полупрозрачной темы активности с жёстко заданной ориентацией может вызывать исключение при запуске. Если приложение падает с ошибкой, связанной с orientation, проверьте тему активности в манифесте — возможно, потребуется убрать фиксацию ориентации или сменить тему.
Сохранение состояния при повороте экрана
При повороте устройства система по умолчанию уничтожает и пересоздаёт активность. Это стандартное поведение Android: пересоздание позволяет загрузить ресурсы, подходящие под новую ориентацию (например, другой макет из папки layout-land). Побочный эффект — теряются данные, введённые пользователем, если они не сохранены.
Есть несколько подходов к решению:
- 💾 onSaveInstanceState() — сохранение данных в Bundle перед уничтожением активности
- 🏗️ ViewModel — архитектурный компонент, переживающий пересоздание активности
- ⚙️
android:configChanges="orientation|screenSize"— запрет пересоздания, активность сама обрабатывает поворот черезonConfigurationChanged()
⚠️ Внимание: атрибут configChanges считается крайней мерой. Официальная документация Android рекомендует сначала использовать ViewModel и onSaveInstanceState, а блокировку пересоздания применять только при реальной необходимости — например, для видеоплееров.
Тестирование разных ориентаций в Layout Editor
Проверить, как выглядит макет в горизонтальном положении, можно прямо в редакторе макетов, без запуска эмулятора. Откройте XML-файл разметки и на панели предпросмотра найдите кнопку смены ориентации — иконку устройства со стрелкой. Один клик переключает предпросмотр между portrait и landscape.
Для разных ориентаций можно создавать отдельные макеты. Поместите альтернативный XML-файл в папку res/layout-land/ — система автоматически подхватит его при повороте устройства в горизонтальное положение. Имена файлов в обеих папках должны совпадать.
Типичные проблемы и их решения
Если поворот работает некорректно, пройдитесь по типичным причинам. Большинство из них диагностируется за пару минут без переустановки чего-либо.
Эмулятор завис при повороте. Закройте виртуальное устройство и запустите его заново через Device Manager. Если проблема повторяется, попробуйте холодную загрузку: в списке устройств выберите Cold Boot Now в меню действий эмулятора.
Приложение падает при повороте. Откройте вкладку Logcat и воспроизведите падение — в логе будет видно, какое исключение выброшено. Частые причины: обращение к уже уничтоженным объектам после пересоздания активности или неинициализированные переменные в новой копии активности.
Поворот работает на эмуляторе, но не на реальном телефоне. Возможная причина — отключённый автоповорот в настройках самого телефона или фиксация ориентации в манифесте приложения. Проверьте оба варианта, прежде чем искать ошибку в коде.
Часто задаваемые вопросы
Как повернуть экран эмулятора без мыши?
Используйте сочетание Ctrl + стрелка влево/вправо (на macOS — с клавишей Cmd). Точные сочетания для вашей версии смотрите в разделе Extended controls → Help → Keyboard shortcuts.
Почему кнопка Rotate нажимается, но экран не вращается?
Наиболее вероятная причина — выключенный автоповорот в настройках виртуального Android. Откройте шторку быстрых настроек внутри эмулятора и включите Auto-rotate. Также проверьте, не зафиксирована ли ориентация в манифесте самого приложения.
Как запретить поворот экрана в своём приложении?
Добавьте в манифест к нужной активности атрибут android:screenOrientation="portrait" для вертикальной или "landscape" для горизонтальной фиксации. Из кода используйте метод setRequestedOrientation().
Почему при повороте пропадают введённые данные?
Система уничтожает и пересоздаёт активность при смене ориентации. Сохраняйте данные через onSaveInstanceState() или храните состояние во ViewModel, который переживает пересоздание.
Можно ли проверить горизонтальный макет без запуска эмулятора?
Да. В редакторе макетов Android Studio есть кнопка смены ориентации предпросмотра. Для полноценной горизонтальной версии создайте отдельный макет в папке res/layout-land/.