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 du système ou depuis l'extérieur du processus à l'aide d'un intent. Les événements informent l'interface utilisateur évolutive des occurrences qui nécessitent une réponse.
Un événement d'interface utilisateur é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'interface utilisateur. 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 obligatoire (ID) identifie un événement. Cet ID catégorise le type d'occurrence, tel que _System_TaskOpenEvent ou _System_PanelEmptyEvent.
En plus de cet ID, un événement peut éventuellement contenir des jetons, des paires clé/valeur permettant de fournir le contexte et des détails sur l'événement. Ces jetons permettent un filtrage plus précis des événements, 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 forme de 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é lié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 des animations en écoutant une transition de panneau. Par exemple, déclenchez 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 correspondance des événements
Lorsqu'un événement est envoyé, il doit correspondre à des critères définis pour déclencher une transition ou une action. Le processus de correspondance se déroule en deux étapes :
Correspondance stricte de l'événement
id: l'idde l'événement envoyé doit correspondre exactement à l'idspé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 non correspondant.Correspondance partielle des jetons d'événement : lorsque les ID d'événement correspondent, le système utilise une 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 strictement aux propriétés correspondantes de l'événement envoyé.
Cela dit, l'événement envoyé 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 dans l'évaluation de la correspondance.
À l'inverse, si le filtre spécifie un jeton qui n'est pas présent dans l'événement envoyé 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 envoyé 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 plus spécifique de la Activity value in the
dispatched event is considered a match forcom.android.myapp`.
Toutefois, la correspondance échoue si l'événement envoyé est id="app_open",
panelId="panel1", et component="com.android.yourapp.Activity".
Bien que id et panelId correspondent, le component n'est pas égal à component
dans la transition (com.android.myapp) et ne correspond pas à com.android.yourapp
dans l'événement envoyé.
Déclencheur de transition
Bien qu'une transition puisse correspondre, cela ne signifie pas qu'elle est déclenchée. Une seule transition peut être déclenchée pour chaque événement. L'interface utilisateur évolutive vise à ne déclencher que la correspondance la plus proche.
Par exemple, lorsque deux transitions (une avec un nom de composant et une 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 essentiels au comportement dynamique de l'interface utilisateur évolutive. Les événements peuvent être envoyés depuis l'UI du système ou depuis des processus externes avec un intent.
É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' Accueil écran. Dans AAOS, Accueil 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 d'accueil principale par l'utilisateur. |
_System_TaskOpenEvent( SYSTEM_TASK_OPEN_EVENT_ID) |
Est envoyé 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) |
Indique 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 à la fermeture des applications. Cela peut déclencher des transitions pour rétablir l'état par défaut
d'un panneau ou lancer d'autres actions de nettoyage.
|
_System_TaskPanelEmptyEvent( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID) |
Est envoyé lorsqu'un panneau spécifique devient vide et inclut le
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'empêcher 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 (SUW). 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'accès à un état système aussi critique nécessite un événement dédié pour déclencher les ajustements ou les actions d'interface utilisateur appropriés. |
_System_ExitSuwEvent( SYSTEM_EXIT_SUW_EVENT_ID) |
Indique que le système quitte l'assistant de configuration (SUW). 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) |
Est déclenché lorsqu'une animation est terminée dans l'interface utilisateur. 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 |