QML-тип ApplicationWindow
Компонент верхнего уровня приложения ОС Аврора. Подробнее…
Строка импорта: | import Sailfish.Silica 1.0 |
Наследуется от: | SilicaControl |
Свойства
- allowedOrientations : enumeration
- background.color : color
(preliminary)
- background.filter : string
(preliminary)
- background.image : url
(preliminary)
- background.material : string
(preliminary)
- background.wallpaper : var
(preliminary)
- bottomMargin : real
- contentItem : Item
- cover : var
- defaultAllowedOrientations : enumeration
- deviceOrientation : enumeration
- displayMode : ApplicationDisplayMode
- initialPage : var
- orientation : enumeration
- pageStack : PageStack
- screenRotation : real
- statusbarBackgroundColor : color
- statusbarForceVisible : bool
- statusbarOpacity : real
- statusbarScheme : ColorScheme
Прикрепляемые свойства
- SafeZoneRect : SafeZoneRect
Методы
- activate()
- deactivate()
Подробное описание
Тип ApplicationWindow
используется для создания элемента верхнего уровня в приложении ОС
Аврора.
Каждое приложение ОС Аврора должно иметь один компонент ApplicationWindow
, определённый
в корне его иерархии. Окно приложения — это точка входа для загрузки приложения.
Тип ApplicationWindow
позволяет приложению:
- управлять стеком страниц;
- устанавливать активную обложку;
- устанавливать фоновый рисунок;
- обрабатывать изменения ориентации для обновления пользовательского интерфейса.
Самое простое окно приложения состоит из одной initialPage — страницы, которая отображается при открытии приложения:
import Sailfish.Silica 1.0
ApplicationWindow {
initialPage: Component {
Page {
Text { <s7>text</s7>: "Привет!" }
}
}
}
Иерархическая навигация со стеком страниц приложения
Каждое окно приложения содержит один стек страниц, доступный через свойство pageStack, который определяет контент, отображаемый приложением. Стек состоит из объектов Page: каждая страница содержит контент, который будет отображаться приложением в определённый момент времени. Страница с контентом может быть добавлена (push) в стек или удалена (pop) из стека. Самая верхняя страница — это страница, которая последней была помещена в стек и которая в настоящее время отображается в окне приложения.
Ниже представлено простое приложение, которое изначально отображает страницу, содержащую единственную кнопку. Когда кнопка нажата, Page определённая как AnotherPage.qml помещается в стек и становится самой верхней страницей, отображаемой приложением:
// main.qml
import QtQuick 2.2
import Sailfish.Silica 1.0
ApplicationWindow {
initialPage: Component {
Page {
Button {
text: "Привет!"
onClicked: pageStack.push("AnotherPage.qml")
}
}
}
}
// AnotherPage.qml
import QtQuick 2.2
import Sailfish.Silica 1.0
Page {
Button {
text: "Закрыть эту страницу"
onClicked: pageStack.pop()
}
}
Получить дополнительную информацию об изменении стека страниц можно в документации PageStack.
Активные обложки: предоставление статуса приложения на главном экране
Для каждого приложения ОС Аврора может быть установлена собственная активная обложка через свойство cover. Активная обложка — это визуальное представление приложения, которое отображается на домашнем экране, когда приложение работает в фоновом режиме. Обложка позволяет взаимодействовать с приложением (например, выполнять какие-либо действия), либо просто отображать его статус.
Например:
ApplicationWindow {
initialPage: Component { MyPage {} }
cover: Component { MyCover {} }
}
Обложка должна предусматривать возможность масштабирования, так как её размер может изменяться в зависимости от количества приложений, запущенных в фоновом режиме. Если для обложки необходимы какие-либо действия, то их реализацию следует выполнять в контейнере CoverActionList.
Включение изменений ориентации
Приложению можно разрешить изменять ориентацию пользовательского интерфейса в соответствии с изменением ориентации устройства либо ограничить пользовательский интерфейс одной ориентацией, изменив свойство allowedOrientations.
Свойство orientation отражает текущую ориентацию пользовательского интерфейса и может быть использовано для оптимального (для текущей ориентации) расположения элементов.
Для приложений, использующих объект типа PageStack, следует предпочесть использование функциональности, экспортированной компонентом Page для поддержки нескольких ориентаций.
Работа с вырезами и закругленными углами экрана
Для правильной работы на дисплеях с вырезами и закругленными углами в ApplicationWindow
имеется механизм безопасной зоны. Безопасная зона — это область экрана, в которой приложение может корректно
разместиться и отображаться независимо от устройства и характеристик его дисплея. Этот механизм позволяет приложению в
безопасной зоне выглядеть правильно в любой ситуации. Для новых приложений лучше выбирать полноэкранный режим
displayMode, поскольку так они выглядят более естественно и красиво.
Чтобы отслеживать точные границы безопасной зоны, можно использовать свойство insets из прикрепляемого свойства
SafeZoneRect
.
В примере ниже показано, как работать с SafeZoneRect:
Page {
id: page
allowedOrientations: Orientation.All
SilicaFlickable {
anchors.fill: parent
Rectangle {
anchors {
horizontalCenter: parent.horizontalCenter
top: parent.top
topMargin: SafeZoneRect.insets.top
}
width: 100
height: 100
color: "green"
}
Rectangle {
anchors {
verticalCenter: parent.verticalCenter
left: parent.left
leftMargin: SafeZoneRect.insets.left
}
width: 100
height: 100
color: "red"
}
}
}
См. также displayMode и SafeZoneRect.
Описание свойств
allowedOrientations : enumeration
Содержит набор значений ориентаций, которые могут задавать поворот интерфейса. Значение может быть любой комбинацией из:
Orientation.Portrait
;Orientation.Landscape
;Orientation.PortraitInverted
;Orientation.LandscapeInverted
.
Кроме этого, могут быть использованы следующие значения:
Orientation.PortraitMask
;Orientation.LandscapeMask
;Orientation.All
.
Ориентация интерфейса пользователя управляется путём изменения значения свойства allowedOrientations
. Если текущая
ориентация устройства разрешена маской allowedOrientations
, то при изменении ориентации устройства новая ориентация
будет автоматически выбрана в качестве текущей ориентации пользовательского интерфейса.
Если текущая ориентация устройства разрешена, то при изменении свойства allowedOrientations
она сразу будет выбрана
в качестве ориентации интерфейса пользователя. В противном случае будет проверена следующая последовательность
ориентаций относительно маски: Portrait
, Landscape
, LandscapeInverted
, PortraitInverted
, и будет выбрана
первая разрешенная ориентация.
Если приложение по умолчанию должно повторять ориентацию других приложений платформы, свойство allowedOrientations
может быть привязано к defaultAllowedOrientations. Следует
обратить внимание, что значение defaultAllowedOrientations
зависит от конфигурации устройства.
Приложение может установить свойство allowedOrientations так, чтобы ограничить набор возможных
ориентаций для всех страниц в PageStack. Затем фактическая ориентация выбирается из пересечения
разрешенных ориентаций для ApplicationWindow
и для Page, которая является
текущей вершиной стека. Если текущая страница требует ориентации, которую свойство
ApplicationWindow
не разрешает, то ориентация Page будет иметь приоритет.
Значение по умолчанию: Orientation.All
.
См. также: orientation, defaultAllowedOrientations, deviceOrientation и Page.
background.color : color
Это свойство QML находится в стадии разработки и может быть изменено.
Накладываемый цвет, который будет предоставлен в качестве входных данных для фонового material.
По умолчанию это цвет, полученный из цветовой схемы палитры ApplicationWindow
.
background.filter : string
Это свойство QML находится в стадии разработки и может быть изменено.
Название фильтра для обоев темы, предоставленного Filters
для применения к фоновому
image. Если название фильтра — это пустая строка, фоновое изображение
будет показываться без применения каких-либо фильтров.
По умолчанию это название фильтра обоев системной темы.
background.image : url
Это свойство QML находится в стадии разработки и может быть изменено.
URL-адрес изображения, которое заменит фоновое изображение системного приложения.
К загруженному изображению применяется тема или приложение, определённое свойством
filter. Фильтрацию можно отключить, присвоив свойству filter
пустую
строку.
Как и фон приложения, изображение при показе будет масштабировано по размеру экрана в обеих ориентациях, будет поворачиваться при изменении ориентации, и в зависимости от свойства material темы или фона будет иметь шаблон для тайлов и наложенный поверх себя color.
background.material : string
Это свойство QML находится в стадии разработки и может быть изменено.
Название фонового материала темы, предоставленного Materials
, который должен
использоваться для рендеринга wallpaper,
image или системных обоев.
По умолчанию это название фонового материала системной темы.
background.wallpaper : var
Это свойство QML находится в стадии разработки и может быть изменено.
Компонент QML или URL-адрес файла QML для элемента, который заменит фоновое изображение системного приложения.
Как и фон приложения, этот элемент при показе будет масштабирован по размеру экрана в обеих ориентациях, будет поворачиваться при изменении ориентации, и в зависимости от свойства material темы или фона будет иметь шаблон для тайлов и наложенный поверх себя color.
bottomMargin : real
Отступ между стеком страниц и нижней частью окна приложения. Значение по умолчанию равно 0.0.
Данное свойство может использоваться, например, чтобы показывать «плавающие» элементы управления, которые всегда видны независимо от отображаемой страницы.
Примечание. Зарезервированная область больше, чем содержимое, отображаемое в bottomMargin
, и панель ввода.
Если отображается панель ввода, тогда содержимое, находящееся в bottomMargin
, будет перекрыто.
contentItem : Item
Внутренний элемент, содержащий дочерние элементы окна приложения.
Дочерние элементы окна приложения наследуются от элемента contentItem
. Размер и расположение contentItem
соответствуют размеру и расположению текущей страницы, но координаты contentItem
не вращаются. Рекомендуется
размещать весь контент на странице, поскольку он правильно обрабатывает изменения координат. Элементам, которые являются
дочерними элементами окна приложения, нужно самим позаботиться об изменениях ориентации.
cover : var
Определяет обложку, которая отображается на главном экране, когда приложение находится в фоновом режиме. На обложке обычно отображается текущее состояние приложения. В зависимости от количества открытых приложений изменяется размер обложки на домашнем экране, поэтому обложка должна быть масштабируемой.
Обложка должна быть типом Component с типом Cover верхнего уровня или URL-адресом, указывающим на загружаемый компонент. Также она может быть экземпляром обложки, что не рекомендуется, так как обложка будет загружена до того, как она будет показана.
Обложка также может допускать взаимодействие посредством CoverActionList.
[read-only] defaultAllowedOrientations : enumeration
Содержит значения ориентаций устройства, которые разрешены по умолчанию. Значение может быть любой комбинацией из:
Orientation.Portrait
;Orientation.Landscape
;Orientation.PortraitInverted
;Orientation.LandscapeInverted
.
Значение свойства зависит от конфигурации устройства. Как правило, для планшетного устройства будут разрешены все ориентации, а телефон будет исключать ориентацию перевернутого портрета.
См. также orientation и allowedOrientations.
deviceOrientation : enumeration
Содержит текущую ориентацию устройства.
Orientation.Portrait
;Orientation.Landscape
;Orientation.PortraitInverted
;Orientation.LandscapeInverted
.
Данное свойство отражает текущую ориентацию устройства. Она изменяется при изменении положения устройства.
См. также orientation и allowedOrientations.
displayMode : ApplicationDisplayMode
Текущий режим отображения содержимого приложения. Возможные значения:
-
ApplicationDisplayMode.FullPortrait
— содержимое приложения занимает весь экран при ориентацииOrientation.PortraitMask
, в противном случае — внутриSafeZone
. -
ApplicationDisplayMode.FillScreen
— содержимое приложения занимает весь экран. -
ApplicationDisplayMode.SafeZone
— содержимое приложения находится внутриSafeZone
.
Значение по умолчанию равно ApplicationDisplayMode.SafeZone
.
initialPage : var
Определяет страницу, которая отображается, когда приложение открыто. Это может быть объектом Page или Component, в котором определен объект Page, или URL-адрес загружаемого компонента типа Page.
Следует обратить внимание, что если экземпляр создаётся явно, как в примере ниже:
ApplicationWindow {
initialPage: Page {
// ...
}
}
то компонент Page
создаётся без родителя, поскольку сам ApplicationWindow
ещё
не создан. Это означает, что любые свойства, зависящие от родителя, будут обработаны заново после создания экземпляра
ApplicationWindow
.
Предпочтительно предоставлять компонент, который может быть использован для создания экземпляра страницы, после того,
как будет создан экземпляр ApplicationWindow
. Тогда приведённый выше пример должен
выглядеть так:
ApplicationWindow {
initialPage: Component {
Page {
// ...
}
}
}
См. также PageStack::push().
[read-only] orientation : enumeration
Содержит текущую ориентацию интерфейса пользователя.
Orientation.Portrait
;Orientation.Landscape
;Orientation.PortraitInverted
;Orientation.LandscapeInverted
.
Для проверки портретной и альбомной ориентации, без учета естественных или инвертированных вариантов, могут быть использованы следующие маски:
Orientation.PortraitMask
;Orientation.LandscapeMask
;
Данное свойство описывает текущую ориентацию интерфейса пользователя, выбранную маской allowedOrientations. Она может использоваться для настройки расположения элементов пользовательского интерфейса в соответствии с текущей ориентацией.
Приложение, использующее PageStack, не должно использовать это значение напрямую. Для расположения
элементов Page должно использоваться свойство orientation компонента
Page
, т. к. оно изменяется синхронно с анимацией перехода ориентации.
См. также: allowedOrientations, deviceOrientation и Page.
pageStack : PageStack
Содержит страницы, отображаемые в приложении.
Свойство initialPage будет автоматически добавлено в pageStack
.
Дополнительные страницы могут быть добавлены в стек или удалены из стека.
См. также PageStack.
screenRotation : real
Угол поворота, который применяется для выравнивания портретного формата интерфейса пользователя с координатами устройства.
Свойство screenRotation
первоначально считывается из ключа GConf /desktop/jolla/components/screen_rotation_angle
.
Также данное свойство может быть изменено во время выполнения. Поворот экрана может быть кратным 90 градусам.
statusbarBackgroundColor : color
Цвет фона статусбара.
По умолчанию это цвет Theme.overlayBackground
.
statusbarForceVisible : bool
При истинном значении статусбар становится видимым. Если для displayMode
установлено значение ApplicationDisplayMode.SafeZone
, оно будет игнорироваться в пользу настроек, заданных
пользователем.
Значение по умолчанию: false
.
См. также displayMode.
statusbarOpacity : real
Прозрачность фона статусбара.
Значение по умолчанию: 0.0.
statusbarScheme : ColorScheme
Текущая цветовая схема значков статусбара.
Описание прикрепляемых свойств
[read-only] ApplicationWindow.SafeZoneRect : SafeZoneRect
Прикрепляемое свойство содержит отступы прямоугольника безопасной зоны.
Описание методов
activate()
Выводит приложение на передний план в полноэкранном режиме.
deactivate()
Отправляет приложение в фоновый режим. Свёрнутое приложение отображается как активная обложка на домашнем экране.