Событие инициирует изменение состояния и выполнение действий. События действуют как сигналы, отправляемые из системного пользовательского интерфейса или извне процесса с помощью намерения. События информируют масштабируемый пользовательский интерфейс о событиях, требующих реакции.
Событие масштабируемого пользовательского интерфейса (Scalable UI) — это системный сигнал, активируемый изменениями оборудования или программного обеспечения, который может изменить состояние панели. Эти события уведомляют фреймворк о событиях, требующих реакции пользовательского интерфейса. Для более точного управления состояниями панелей можно также определить пользовательские события в дополнение к встроенным системным событиям.
Структура мероприятия
Событие идентифицируется обязательным уникальным идентификатором (ID). Этот идентификатор определяет тип события, например, _System_AppOpenEvent
или _System_PanelEmptyEvent
.
Помимо этого идентификатора, событие может содержать токены — пары «ключ-значение», предоставляющие контекст и подробную информацию о событии. Эти токены позволяют более детально фильтровать события, позволяя запускать переходы или действия только при определённых условиях.
Токены передаются событию в виде списка пар «ключ-значение», разделённых точкой с запятой ( ;
). Вот список поддерживаемых системой ключей:
Ключ | Описание |
---|---|
panelId | Определяет конкретную панель пользовательского интерфейса, связанную с событием. |
component | Указывает имя компонента, например действие, связанное с событием. |
package | Указывает имя пакета, связанного с событием. |
panelToVariantId | Указывает целевой вариант панели в определённых контекстах. Используйте этот атрибут для каскадной анимации, отслеживая переход панели. Например, можно запустить переход панели B в закрытое состояние при переходе панели A в открытое состояние. |
Например:
"component=com.android.app;panelId=panel1"
Логика сопоставления событий
При отправке события оно должно быть сопоставлено с заданными критериями для запуска перехода или действия. Процесс сопоставления происходит в два этапа:
Строгое соответствие
id
события:id
отправленного события должен точно совпадать сid
, указанным в фильтре событий перехода или действия. Если идентификаторы не совпадают, событие считается несовпадающим.Частичное совпадение токенов событий: при совпадении идентификаторов событий система использует частичное совпадение для оценки токенов события по токенам, определенным в фильтре.
Для того чтобы произошло совпадение, все свойства события (токены), указанные в определении события перехода, должны строго соответствовать свойствам в отправленном событии.
При этом отправленное событие может содержать дополнительные токены, явно не указанные в фильтре. Дополнительные токены не препятствуют сопоставлению. Вместо этого они игнорируются при оценке соответствия.
И наоборот, если фильтр указывает токен, которого нет в отправленном событии, или если значение совпадающего токена не совпадает, это не считается совпадением.
Например, рассмотрим переход, который срабатывает при возникновении id="app_open"
на panelId="panel1"
с component="com.android.myapp.Activity"
.
Если отправленное событие имеет id="app_open"
, panelId="panel1"
и component="com.android.myapp.Activity"
, то совпадение устанавливается. Все критерии фильтра соблюдены, и более конкретное Activity value in the dispatched event is considered a match for
com.android.myapp.
Однако сопоставление не выполняется, если отправленное событие имеет значения id="app_open"
, panelId="panel1"
и component="com.android.yourapp.Activity"
. Хотя id
и panelId
совпадают, component
, не равный component
в переходе — com.android.myapp
— не соответствует com.android.yourapp
в отправленном событии.
триггер перехода
Хотя переход может быть совпадением, это не означает, что он сработает. Для каждого события может быть сгенерирован только один переход. Масштабируемый пользовательский интерфейс стремится сгенерировать только наиболее точное совпадение.
Например, когда совпадают два перехода — один с именем компонента и один без имени компонента -m
, срабатывает только переход с именем компонента.
Отправка и обработка событий
События играют ключевую роль в динамическом поведении масштабируемого пользовательского интерфейса. События могут быть инициированы из системного пользовательского интерфейса или из внешних процессов с намерением.
Системные события
В структуре определены несколько системных событий, которые облегчают эти действия:
Атрибут | Описание |
---|---|
_System_OnHomeEvent ( SYSTEM_HOME_EVENT_ID ) | Означает, что система получила запрос на отображение главного экрана. В AAOS главный экран может представлять собой гибкую конфигурацию окон, например, комбинацию виджетов или даже карту. Это событие критически важно для переходов или действий, зависящих от того, просматривает ли пользователь основной главный экран. |
_System_TaskOpenEvent ( SYSTEM_TASK_OPEN_EVENT_ID ) | Отправляется при открытии задачи или приложения. Это общее событие может инициировать действия или переходы, связанные с запуском приложения. Это событие содержит токены, такие как |
_System_TaskCloseEvent ( SYSTEM_TASK_CLOSE_EVENT_ID ) | Сигнализирует о закрытии задачи или приложения и служит аналогом события _System_TaskOpenEvent . Это позволяет системе реагировать на закрытие приложений. Это может инициировать переходы для возврата панели в состояние по умолчанию или инициировать другие действия по очистке. |
_System_TaskPanelEmptyEvent ( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID ) | Отправляется, когда определенная панель становится пустой, и включает Это событие важно для надежного восстановления после ошибок и перезапуска приложений в случае сбоя или неожиданного завершения работы соответствующего содержимого, чтобы предотвратить отображение пустых панелей пользовательского интерфейса. Например, если приложение |
_System_EnterSuwEvent ( SYSTEM_ENTER_SUW_EVENT_ID ) | Указывает на то, что система переходит в режим мастера настройки (SUW). Это событие сигнализирует о готовности системы и может быть настроено на запуск приложений или отображение назначенных панелей после инициализации системы. Переход системы в такое критическое состояние требует специального события для запуска соответствующих настроек или действий пользовательского интерфейса. |
_System_ExitSuwEvent ( SYSTEM_EXIT_SUW_EVENT_ID ) | Указывает на выход системы из мастера настройки (SUW). Подобно _System_EnterSuwEvent , это событие позволяет системе отреагировать на завершение процесса настройки запуском приложений по умолчанию или переходом к стандартному пользовательскому интерфейсу. |
_System_OnAnimationEndEvent ( SYSTEM_ON_ANIMATION_END_EVENT_ID ) | Срабатывает после завершения анимации в пользовательском интерфейсе. Это событие можно использовать для запуска последующих действий или изменений состояния, зависящих от завершения визуального перехода. Это событие содержит токен для |