Un événement déclenche des changements d'état et lance des actions. Les événements agissent comme des signaux, envoyés depuis l'UI système ou depuis l'extérieur du processus à l'aide d'un intent. Les événements informent l'UI évolutive des occurrences qui nécessitent une réponse.
Un événement d'UI évolutive est un signal système, déclenché par des modifications matérielles ou logicielles, qui peut modifier l'état d'un panneau. Ces événements informent le framework des occurrences qui nécessitent une réponse de l'UI. Pour un contrôle plus précis des états des panneaux, vous pouvez également définir des événements personnalisés en plus des événements système intégrés.
Structure d'un événement
Un identifiant unique (ID) obligatoire permet d'identifier un événement. Cet ID catégorise le type d'occurrence, comme _System_AppOpenEvent
ou _System_PanelEmptyEvent
.
En plus de cet ID, un événement peut éventuellement comporter des jetons (paires clé-valeur) pour fournir du contexte et des détails sur l'événement. Ces jetons permettent de filtrer les événements de manière plus précise, ce qui permet de déclencher des transitions ou des actions uniquement dans des conditions spécifiques.
Les jetons sont transmis à l'événement sous la forme d'une liste de paires clé-valeur séparées par un point-virgule (;
). Voici la liste des clés compatibles avec le système :
Clé | Description |
---|---|
panelId |
Identifie un panneau d'interface utilisateur spécifique associé à l'événement. |
component |
Spécifie le nom du composant, tel qu'une activité associée à l'événement. |
package |
Indique le nom du package associé à l'événement. |
panelToVariantId |
Spécifie la variante cible d'un panneau dans des contextes spécifiques. Utilisez cet attribut pour mettre en cascade les animations en écoutant une transition de panneau. Par exemple, déclencher la transition du panneau B vers l'état fermé lorsque le panneau A passe à l'état ouvert. |
Exemple :
"component=com.android.app;panelId=panel1"
Logique de mise en correspondance des événements
Lorsqu'un événement est déclenché, il doit être mis en correspondance avec des critères définis pour déclencher une transition ou une action. Le processus de mise en correspondance se déroule en deux étapes :
Correspondance stricte des
id
d'événement : leid
de l'événement distribué doit correspondre exactement auid
spécifié dans le filtre d'événement de transition ou d'action. Si les ID ne correspondent pas, l'événement est considéré comme ne correspondant pas.Correspondance partielle des jetons d'événement : lorsque les ID d'événement correspondent, le système utilise la correspondance partielle pour évaluer les jetons d'un événement par rapport aux jetons définis dans le filtre.
Pour qu'une correspondance se produise, toutes les propriétés d'événement (jetons) spécifiées dans la définition d'événement de la transition doivent correspondre exactement aux propriétés correspondantes de l'événement distribué.
Cela dit, l'événement distribué peut contenir des jetons supplémentaires qui ne sont pas explicitement définis dans le filtre. Les jetons supplémentaires n'empêchent pas une correspondance. Au lieu de cela, ils sont ignorés lors de l'évaluation des correspondances.
À l'inverse, si le filtre spécifie un jeton qui n'est pas présent dans l'événement distribué ou si la valeur d'un jeton correspondant ne correspond pas, il n'est pas considéré comme une correspondance.
Prenons l'exemple d'une transition définie pour se déclencher lorsque id="app_open"
a lieu sur panelId="panel1"
avec component="com.android.myapp.Activity"
.
Si un événement distribué comporte id="app_open"
, panelId="panel1"
et component="com.android.myapp.Activity"
, une correspondance est établie. Tous les critères de filtre sont remplis et la valeur la plus spécifique pour Activity value in the
dispatched event is considered a match for
com.android.myapp`.
Toutefois, la correspondance échoue si l'événement distribué est id="app_open"
, panelId="panel1"
et component="com.android.yourapp.Activity"
.
Bien que id
et panelId
correspondent, le component
non égal à component
dans la transition — com.android.myapp
— ne correspond pas à com.android.yourapp
dans l'événement distribué.
Déclencheur de transition
Une transition peut correspondre à un événement, mais cela ne signifie pas qu'elle est déclenchée. Une seule transition peut être déclenchée pour chaque événement. L'UI évolutive vise à ne déclencher que la correspondance la plus proche.
Par exemple, lorsque deux transitions (l'une avec un nom de composant et l'autre sans nom de composant -m
) correspondent, seule la transition avec le nom de composant est déclenchée.
Envoi et gestion des événements
Les événements sont au cœur du comportement dynamique de l'UI évolutive. Les événements peuvent être distribués à partir de l'UI système ou de processus externes avec une intention.
Événements système
Le framework définit plusieurs événements système qui facilitent ces actions :
Attribut | Description |
---|---|
_System_OnHomeEvent ( SYSTEM_HOME_EVENT_ID ) |
Indique que le système a reçu une demande d'affichage de l'écran Accueil. Dans AAOS, Home peut être une configuration flexible de fenêtres, comme une combinaison de widgets, ou même une carte. Cet événement est essentiel pour les transitions ou les actions qui dépendent de l'affichage de l'interface principale de la maison par l'utilisateur. |
_System_TaskOpenEvent ( SYSTEM_TASK_OPEN_EVENT_ID ) |
Est distribué lorsqu'une tâche ou une application est ouverte. Cet événement général peut déclencher des actions ou des transitions en fonction du lancement d'une application. Cet événement contient des jetons tels que |
_System_TaskCloseEvent ( SYSTEM_TASK_CLOSE_EVENT_ID ) |
Signale qu'une tâche ou une application a été fermée et sert de contrepartie à _System_TaskOpenEvent . Cela permet au système de réagir lorsque des applications sont fermées. Cela peut déclencher des transitions pour ramener un panneau à un état par défaut ou pour lancer d'autres actions de nettoyage.
|
_System_TaskPanelEmptyEvent ( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID ) |
Déclenché lorsqu'un panneau spécifique devient vide et inclut Cet événement est important pour une récupération d'erreur robuste et pour relancer les applications lorsque le contenu associé plante ou se termine de manière inattendue afin d'éviter l'affichage de panneaux d'interface utilisateur vides. Par exemple, si une application |
_System_EnterSuwEvent ( SYSTEM_ENTER_SUW_EVENT_ID ) |
Indique que le système accède à l'assistant de configuration. Cet événement signale que le système est prêt et peut être configuré pour lancer des applications ou afficher des panneaux désignés une fois le système initialisé. L'entrée dans un tel état critique du système nécessite un événement dédié pour déclencher les ajustements ou actions d'UI appropriés. |
_System_ExitSuwEvent ( SYSTEM_EXIT_SUW_EVENT_ID ) |
Indique que le système quitte l'assistant de configuration. Semblable à _System_EnterSuwEvent , cet événement permet au système de répondre à la fin du processus de configuration en lançant des applications par défaut ou en passant à une interface utilisateur standard. |
_System_OnAnimationEndEvent ( SYSTEM_ON_ANIMATION_END_EVENT_ID ) |
Déclenchement lorsqu'une animation est terminée dans l'UI. Vous pouvez utiliser cet événement pour déclencher des actions ou des changements d'état ultérieurs qui dépendent de la fin d'une transition visuelle.
Cet événement contient un jeton pour |