イベントは状態の変化をトリガーし、アクションを開始します。 イベントは、インテントを使用してシステム UI またはプロセスの外部からディスパッチされるシグナルとして機能します。 イベントは、対応が必要な発生についてスケーラブル UI に通知します。
スケーラブル UI イベントは、ハードウェアまたはソフトウェアの変更によってトリガーされるシステム シグナルであり、パネルの状態を変更できます。これらのイベントは、UI レスポンスが必要な発生についてフレームワークに通知します。パネルの状態をより正確に制御するために、組み込みのシステム イベントに加えて、カスタム イベントを定義することもできます。
イベントの構造
必須の一意の識別子(ID)によってイベントが識別されます。この ID は、_System_TaskOpenEvent や
_System_PanelEmptyEvent など、発生の種類を分類します。
この ID に加えて、イベントはトークン(イベントのコンテキストと詳細を提供する Key-Value ペア)を任意で保持できます。これらのトークンを使用すると、イベントをより細かくフィルタリングできるため、特定の条件でのみ遷移やアクションをトリガーできます。
トークンは、セミコロン(;)で区切られた Key-Value ペアのリストとしてイベントに渡されます。システムでサポートされているキーのリストは次のとおりです。
| キー | 説明 |
|---|---|
panelId |
イベントに関連付けられた特定の UI パネルを識別します。 |
component |
イベントにリンクされたアクティビティなど、コンポーネント名を指定します。 |
package |
イベントに関連するパッケージ名を示します。 |
panelToVariantId |
特定のコンテキストでパネルのターゲット バリアントを指定します。この属性を使用して、パネルの遷移をリッスンすることでアニメーションをカスケードします。たとえば、パネル A がオープン状態に遷移したときに、パネル B の遷移をクローズ状態にトリガーします。 |
次に例を示します。
"component=com.android.app;panelId=panel1"
イベントのマッチング ロジック
イベントがディスパッチされると、遷移またはアクションをトリガーするために、定義された条件と照合する必要があります。マッチング プロセスは 2 つのステージで行われます。
厳密なイベント
idのマッチング: ディスパッチされたイベントのidは、遷移またはアクション イベント フィルタで指定された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 forcom.android.myapp` のより具体的な値が一致するとみなされます。
ただし、ディスパッチされたイベントが id="app_open"、
panelId="panel1"、および component="com.android.yourapp.Activity" の場合、一致しません。
id と panelId は一致しますが、遷移の component(com.android.myapp)は、ディスパッチされたイベントの com.android.yourapp と一致しません。component
遷移トリガー
遷移が一致しても、トリガーされるとは限りません。各イベントに対してトリガーできる遷移は 1 つだけです。スケーラブル UI は、最も近い一致のみをトリガーすることを目指しています。
たとえば、コンポーネント名を持つ遷移とコンポーネント名を持たない遷移(-m)の 2 つが一致する場合、コンポーネント名を持つ遷移のみがトリガーされます。
イベントのディスパッチと処理
イベントは、スケーラブル UI の動的な動作の中心です。イベントは、インテントを使用してシステム UI または外部プロセスからディスパッチできます。
システム イベント
フレームワークは、次のアクションを容易にするいくつかのシステム イベントを定義します。
| 属性 | 説明 |
|---|---|
_System_OnHomeEvent( SYSTEM_HOME_EVENT_ID) |
システムが [Home] 画面を表示するリクエストを受け取ったことを示します。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) |
特定のパネルが空になるとディスパッチされ、トークンとして
このイベントは、堅牢なエラー復旧と、関連するコンテンツがクラッシュまたは予期せず終了した場合にアプリを再起動して、空の UI パネルが表示されないようにするために重要です。 たとえば、 |
_System_EnterSuwEvent( SYSTEM_ENTER_SUW_EVENT_ID) |
システムが設定ウィザード(SUW)に入ったことを示します。このイベント はシステムの準備完了を通知し、システムが初期化されたらアプリを起動したり、指定されたパネルを表示したりするように構成できます。このような重要なシステム状態に入るには、適切な UI の調整やアクションをトリガーするための専用イベントが必要です。 |
_System_ExitSuwEvent( SYSTEM_EXIT_SUW_EVENT_ID) |
システムが設定ウィザード(SUW)を終了したことを示します。
_System_EnterSuwEvent と同様に、このイベントを使用すると、デフォルトのアプリを起動したり、標準の UI に遷移したりすることで、セットアップ プロセスの完了に応答できます。 |
_System_OnAnimationEndEvent( SYSTEM_ON_ANIMATION_END_EVENT_ID) |
UI でアニメーションが完了するとトリガーされます。このイベントを使用して、視覚的なトランジションの完了に依存する後続のアクションや状態の変化をトリガーできます。 このイベントには、アニメーションの終了時にパネルが終了したバリアントを示す |