Ориентация приложения
Когда приложение работает в какой-либо исключительной ориентации (только в альбомной или только в портретной), можно заранее подготовить Домашний экран пользователя, "повернув" его в правильную ориентацию до запуска непосредственно самого приложения. Поворот интерфейса Домашнего экрана произойдёт при нажатии на иконку приложения до отображения экрана заставки приложения. Это также позволяет отобразить экранную заставку в правильной ориентации, а затем осуществить плавный переход в окно приложения без лишних поворотов интерфейса.
Такое поведение определяется
группой полей в секции X-Aurora-Application
:
SmallScreenOrientation
— для устройств с категориейSilica.Screen.sizeCategory == Silica.Screen.Small
.MediumScreenOrientation
— для устройств с категориейSilica.Screen.sizeCategory == Silica.Screen.Medium
.LargeScreenOrientation
— для устройств с категориейSilica.Screen.sizeCategory == Silica.Screen.Large
.ExtraLargeScreenOrientation
— для устройств с категориейSilica.Screen.sizeCategory == Silica.Screen.ExtraLarge
.Orientation
— для устройств любой категории, но может быть переопределено другим полем из списка выше.
Значения, принимаемые в данных полях: Portrait
, Landscape
, PortraitInverted
,
LandscapeInverted
, PortraitMask
, LandscapeMask
, All
.
Каждое поле может принимать либо одну конкретную ориентацию из предложенного списка, либо список возможных значений, задаваемый через символ ; (точка с запятой).
Пример для приложения, которое может работать во всех ориентациях, но на устройствах с маленьким дисплеем — только в портрете:
[X-Aurora-Application]
Orientation=All
SmallScreenOrientation=Portrait
Пример для приложения, которое может работать только в неинвертированных ориентациях:
[X-Aurora-Application]
Orientation=Portrait;Landscape
Выбор ориентации осуществляется по следующему алгоритму:
- Сначала перебираются все возможные варианты ориентации из поля
Orientation
, каждое значение сравнивается с текущей ориентацией Домашнего экрана. В случае совпадения двух значений выбирается текущая ориентация Домашнего экрана. Если не совпало ни одно из значений, то выбирается первая ориентация из списка. Например, Домашний экран находится в инвертированной ландшафтной ориентации, в таком случае для списка:Orientation=Portrait;Landscape
будет выбрана ориентацияPortrait
. - Затем перебираются все возможные варианты ориентации из поля, соответствующего категории устройства, каждое значение сравнивается с выбранной ориентацией на первом шаге. В случае совпадения двух значений сохраняется ранее выбранная ориентация. В случае несовпадения ни одного из значений выбирается первая ориентация из списка.
- Если итоговая ориентация совпадает с текущей ориентацией Домашнего экрана, то поворота интерфейса не произойдёт, в противном случае интерфейс будет повёрнут в выбранную ориентацию. Затем в выбранной ориентации раскрывается экран заставки приложения.
Примечание. Разработчик приложения должен гарантировать, что приложение отобразит окно приложения в правильной ориентации, указанной в .desktop-файле, в противном случае поворот домашнего экрана произойдёт после отображения экрана заставки.
При этом переход с экрана заставки в окно приложения будет визуально искажён, т. к. ориентация контента экрана заставки не совпадёт с ориентацией контента окна приложения.