Zdarzenie powoduje zmiany stanu i inicjuje działania. Zdarzenia działają jak sygnały wysyłane z interfejsu systemu lub spoza procesu za pomocą intencji. Zdarzenia informują skalowalny interfejs o sytuacjach wymagających reakcji.
Zdarzenie skalowalnego interfejsu to sygnał systemowy wywoływany przez zmiany sprzętowe lub programowe, które mogą zmienić stan panelu. Te zdarzenia powiadamiają platformę o sytuacjach, które wymagają reakcji interfejsu. Aby precyzyjniej kontrolować stany panelu, możesz też zdefiniować zdarzenia niestandardowe oprócz wbudowanych zdarzeń systemowych.
Struktura zdarzenia
Obowiązkowy unikalny identyfikator (ID) identyfikuje zdarzenie. Ten identyfikator kategoryzuje typ wystąpienia, np. _System_AppOpenEvent
lub _System_PanelEmptyEvent
.
Oprócz tego identyfikatora zdarzenie może opcjonalnie zawierać tokeny, czyli pary klucz-wartość, które dostarczają kontekstu i szczegółów zdarzenia. Te tokeny umożliwiają bardziej szczegółowe filtrowanie zdarzeń, dzięki czemu przejścia lub działania mogą być wywoływane tylko w określonych warunkach.
Tokeny są przekazywane do zdarzenia jako lista par klucz-wartość rozdzielonych średnikiem (;
). Oto lista kluczy obsługiwanych przez system:
Klucz | Opis |
---|---|
panelId |
Określa konkretny panel interfejsu powiązany ze zdarzeniem. |
component |
Określa nazwę komponentu, np. aktywności powiązanej ze zdarzeniem. |
package |
Wskazuje nazwę pakietu powiązanego ze zdarzeniem. |
panelToVariantId |
Określa docelową wersję panelu w określonych kontekstach. Użyj tego atrybutu, aby kaskadowo animować elementy, nasłuchując przejścia panelu. Na przykład wywoływanie przejścia panelu B do stanu zamkniętego, gdy panel A przechodzi do stanu otwartego. |
Na przykład:
"component=com.android.app;panelId=panel1"
Logika dopasowywania zdarzeń
Gdy zdarzenie zostanie wysłane, musi zostać dopasowane do zdefiniowanych kryteriów, aby wywołać przejście lub działanie. Proces dopasowywania przebiega w 2 etapach:
Ścisłe dopasowanie zdarzeń:
id
wysłanego zdarzenia musi dokładnie odpowiadaćid
określonej w filtrze zdarzeń przejścia lub działania.id
Jeśli identyfikatory nie pasują do siebie, zdarzenie jest uznawane za niedopasowane.Dopasowywanie tokenów zdarzeń w częściach: gdy identyfikatory zdarzeń są zgodne, system używa dopasowywania w częściach, aby porównać tokeny zdarzenia z tokenami zdefiniowanymi w filtrze.
Aby doszło do dopasowania, wszystkie właściwości zdarzenia (tokeny) określone w definicji zdarzenia przejścia muszą ściśle odpowiadać właściwościom w wysłanym zdarzeniu.
Wysłane zdarzenie może jednak zawierać dodatkowe tokeny, które nie są wyraźnie zdefiniowane w filtrze. Dodatkowe tokeny nie uniemożliwiają dopasowania. Zamiast tego są one ignorowane podczas oceny dopasowania.
Jeśli natomiast filtr określa token, który nie występuje w wysłanym zdarzeniu, lub jeśli wartość pasującego tokena nie jest zgodna, nie jest on uznawany za pasujący.
Rozważmy na przykład przejście zdefiniowane tak, aby było wywoływane, gdy id="app_open"
następuje na panelId="panel1"
z component="com.android.myapp.Activity"
.
Jeśli wysłane zdarzenie ma id="app_open"
, panelId="panel1"
i component="com.android.myapp.Activity"
, następuje dopasowanie. Wszystkie kryteria filtra są spełnione, a wartość parametru Activity value in the
dispatched event is considered a match for
com.android.myapp` jest bardziej szczegółowa.
Dopasowanie nie powiedzie się jednak, jeśli wysłane zdarzenie będzie miało wartości id="app_open"
, panelId="panel1"
i component="com.android.yourapp.Activity"
.
Chociaż id
i panelId
pasują do siebie, component
nie jest równe component
w przejściu – com.android.myapp
– nie pasuje do com.android.yourapp
w wysłanym zdarzeniu.
Aktywator przejścia
Przejście może być zgodne, ale nie musi to oznaczać, że zostanie wywołane. W przypadku każdego zdarzenia można wywołać tylko 1 przejście. Skalowalny interfejs użytkownika ma na celu wywoływanie tylko najbliższego dopasowania.
Jeśli np. pasują do siebie 2 przejścia – jedno z nazwą komponentu, a drugie bez nazwy komponentu -m
– wywoływane jest tylko przejście z nazwą komponentu.
Wysyłanie i obsługa zdarzeń
Zdarzenia są kluczowe dla dynamicznego działania skalowalnego interfejsu. Zdarzenia mogą być wysyłane z interfejsu systemu lub z procesów zewnętrznych za pomocą intencji.
Zdarzenia systemowe
Platforma definiuje kilka zdarzeń systemowych, które ułatwiają te działania:
Atrybut | Opis |
---|---|
_System_OnHomeEvent ( SYSTEM_HOME_EVENT_ID ) |
Oznacza, że system otrzymał żądanie wyświetlenia ekranu Główna. W AAOS strona główna może być elastyczną konfiguracją okien, np. kombinacją widżetów, a nawet mapą. To zdarzenie ma kluczowe znaczenie w przypadku przejść lub działań, które zależą od wyświetlenia przez użytkownika głównego interfejsu domowego. |
_System_TaskOpenEvent ( SYSTEM_TASK_OPEN_EVENT_ID ) |
Wysyłane, gdy otwierane jest zadanie lub aplikacja. To ogólne zdarzenie może wywoływać działania lub przejścia na podstawie uruchomienia aplikacji. To zdarzenie zawiera tokeny takie jak |
_System_TaskCloseEvent ( SYSTEM_TASK_CLOSE_EVENT_ID ) |
Sygnalizuje zamknięcie zadania lub aplikacji i jest odpowiednikiem elementu _System_TaskOpenEvent . Dzięki temu system może reagować na zamykanie aplikacji. Może to spowodować przejścia, które przywrócą panel do stanu domyślnego lub zainicjują inne działania czyszczące.
|
_System_TaskPanelEmptyEvent ( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID ) |
Wysyłane, gdy określony panel staje się pusty. Zawiera symbol To zdarzenie jest ważne w przypadku niezawodnego odzyskiwania po błędach i ponownego uruchamiania aplikacji, gdy powiązane treści ulegną awarii lub zostaną nieoczekiwanie zakończone, aby zapobiec wyświetlaniu pustych paneli interfejsu. Jeśli na przykład aplikacja |
_System_EnterSuwEvent ( SYSTEM_ENTER_SUW_EVENT_ID ) |
Wskazuje, że system wchodzi w kreator konfiguracji. To zdarzenie sygnalizuje gotowość systemu i może być skonfigurowane tak, aby uruchamiać aplikacje lub wyświetlać wybrane panele po zainicjowaniu systemu. Wejście w taki krytyczny stan systemu wymaga specjalnego zdarzenia, które wywoła odpowiednie dostosowania interfejsu lub działania. |
_System_ExitSuwEvent ( SYSTEM_EXIT_SUW_EVENT_ID ) |
Wskazuje, że system opuszcza Kreatora konfiguracji (SUW). Podobnie jak _System_EnterSuwEvent to zdarzenie umożliwia systemowi reagowanie na zakończenie procesu konfiguracji przez uruchamianie domyślnych aplikacji lub przechodzenie do standardowego interfejsu. |
_System_OnAnimationEndEvent ( SYSTEM_ON_ANIMATION_END_EVENT_ID ) |
Wywoływane, gdy animacja w interfejsie użytkownika zostanie ukończona. Możesz użyć tego zdarzenia, aby wywołać kolejne działania lub zmiany stanu, które zależą od zakończenia przejścia wizualnego.
To zdarzenie zawiera token |