Un evento attiva i cambiamenti di stato e avvia le azioni. Gli eventi fungono da segnali, inviati dalla UI di sistema o dall'esterno del processo utilizzando un intent. Gli eventi informano l'interfaccia utente scalabile di occorrenze che richiedono una risposta.
Un evento dell'interfaccia utente scalabile è un segnale di sistema, attivato da modifiche hardware o software, che può alterare lo stato di un pannello. Questi eventi notificano al framework gli eventi che richiedono una risposta dell'interfaccia utente. Per un controllo più preciso degli stati del pannello, puoi anche definire eventi personalizzati, oltre agli eventi di sistema integrati.
Struttura di un evento
Un identificatore univoco (ID) obbligatorio identifica un evento. Questo ID classifica il tipo di occorrenza, ad esempio _System_AppOpenEvent
o _System_PanelEmptyEvent
.
Oltre a questo ID, un evento può facoltativamente contenere token, coppie chiave-valore per fornire contesto e dettagli sull'evento. Questi token consentono un filtraggio più granulare degli eventi, attivando transizioni o azioni solo in condizioni specifiche.
I token vengono passati all'evento come elenco di coppie chiave-valore separate da
un punto e virgola (;
). Ecco l'elenco delle chiavi supportate dal sistema:
Chiave | Descrizione |
---|---|
panelId |
Identifica un pannello dell'interfaccia utente specifico associato all'evento. |
component |
Specifica il nome del componente, ad esempio un'attività collegata all'evento. |
package |
Indica il nome del pacchetto correlato all'evento. |
panelToVariantId |
Specifica la variante di destinazione di un riquadro in contesti specifici. Utilizza questo attributo per creare animazioni a cascata ascoltando una transizione del pannello. Ad esempio, attivare la transizione del riquadro B allo stato chiuso quando il riquadro A passa allo stato aperto. |
Ad esempio:
"component=com.android.app;panelId=panel1"
Logica di corrispondenza degli eventi
Quando viene inviato un evento, deve essere confrontato con i criteri definiti per attivare una transizione o un'azione. La procedura di corrispondenza si svolge in due fasi:
Corrispondenza esatta dell'evento
id
: ilid
dell'evento inviato deve corrispondere esattamente alid
specificato nel filtro dell'evento di transizione o azione. Se gli ID non corrispondono, l'evento viene considerato non corrispondente.Corrispondenza parziale dei token evento: quando gli ID evento corrispondono, il sistema utilizza la corrispondenza parziale per valutare i token di un evento rispetto ai token definiti nel filtro.
Affinché si verifichi una corrispondenza, tutte le proprietà (token) dell'evento specificate nella definizione dell'evento della transizione devono corrispondere esattamente alle proprietà corrispondenti nell'evento inviato.
Detto questo, l'evento inviato può contenere token aggiuntivi non definiti in modo esplicito nel filtro. I token aggiuntivi non impediscono una corrispondenza. ma vengono ignorati nella valutazione della corrispondenza.
Al contrario, se il filtro specifica un token non presente nell'evento inviato o se il valore di un token corrispondente non è allineato, non viene considerato una corrispondenza.
Ad esempio, considera una transizione definita per essere attivata quando id="app_open"
si verifica
su panelId="panel1"
con component="com.android.myapp.Activity"
.
Se un evento inviato ha id="app_open"
, panelId="panel1"
e
component="com.android.myapp.Activity"
, viene creata una corrispondenza. Tutti i criteri di filtro
vengono soddisfatti e il valore più specifico per Activity value in the
dispatched event is considered a match for
com.android.myapp`.
Tuttavia, la corrispondenza non riesce se l'evento inviato quando id="app_open"
,
panelId="panel1"
e component="com.android.yourapp.Activity"
.
Anche se id
e panelId
corrispondono, component
non è uguale a component
nella transizione com.android.myapp
non corrisponde a com.android.yourapp
nell'evento inviato.
Trigger di transizione
Anche se una transizione può essere una corrispondenza, non significa che venga attivata. Per ogni evento può essere attivata una sola transizione. L'interfaccia utente scalabile ha lo scopo di attivare solo la corrispondenza più vicina.
Ad esempio, quando due transizioni, una con un nome di componente e una senza un nome di componente -m
, corrispondono, viene attivata solo la transizione con il nome del componente.
Invio e gestione degli eventi
Gli eventi sono fondamentali per il comportamento dinamico dell'interfaccia utente scalabile. Gli eventi possono essere inviati dalla UI di sistema o da processi esterni con un intent.
Eventi di sistema
Il framework definisce diversi eventi di sistema che facilitano queste azioni:
Attributo | Descrizione |
---|---|
_System_OnHomeEvent ( SYSTEM_HOME_EVENT_ID ) |
Indica che il sistema ha ricevuto una richiesta di visualizzazione della schermata Home. In AAOS, Home può essere una configurazione flessibile di finestre, ad esempio una combinazione di widget o persino una mappa. Questo evento è fondamentale per le transizioni o le azioni che dipendono dalla visualizzazione dell'interfaccia principale della casa da parte dell'utente. |
_System_TaskOpenEvent ( SYSTEM_TASK_OPEN_EVENT_ID ) |
Viene inviato quando viene aperta un'attività o un'app. Questo evento generale può attivare azioni o transizioni in base all'avvio di un'app. Questo evento contiene token come |
_System_TaskCloseEvent ( SYSTEM_TASK_CLOSE_EVENT_ID ) |
Indica che un'attività o un'app è stata chiusa e funge da controparte di
_System_TaskOpenEvent . In questo modo, il sistema può reagire alla chiusura delle app. Ciò può attivare transizioni per riportare un pannello a uno stato predefinito
o per avviare altre azioni di pulizia.
|
_System_TaskPanelEmptyEvent ( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID ) |
Viene inviato quando un pannello specifico diventa vuoto e include
Questo evento è importante per il ripristino robusto degli errori e per riavviare le app quando i contenuti associati si arrestano in modo anomalo o terminano in modo imprevisto per evitare la visualizzazione di pannelli dell'interfaccia utente vuoti. Ad esempio, se un'app |
_System_EnterSuwEvent ( SYSTEM_ENTER_SUW_EVENT_ID ) |
Indica che il sistema sta avviando la configurazione guidata. Questo evento indica che il sistema è pronto e può essere configurato per avviare app o visualizzare i pannelli designati una volta inizializzato il sistema. L'inserimento di uno stato critico del sistema richiede un evento dedicato per attivare le azioni o le modifiche dell'interfaccia utente appropriate. |
_System_ExitSuwEvent ( SYSTEM_EXIT_SUW_EVENT_ID ) |
Indica l'uscita del sistema dalla configurazione guidata. Simile a
_System_EnterSuwEvent , questo evento consente al sistema di rispondere
al completamento della procedura di configurazione avviando app predefinite o
passando a un'interfaccia utente standard. |
_System_OnAnimationEndEvent ( SYSTEM_ON_ANIMATION_END_EVENT_ID ) |
Attivato quando un'animazione viene completata nella UI. Puoi utilizzare questo
evento per attivare azioni o modifiche dello stato successive che dipendono dal
completamento di una transizione visiva.
Questo evento contiene un token per |