אירוע מפעיל שינויים במצב ויוזם פעולות. אירועים פועלים כאותות שנשלחים מממשק המשתמש של המערכת או מחוץ לתהליך באמצעות intent. האירועים מיידעים את ממשק המשתמש הגמיש על מקרים שדורשים תגובה.
אירוע UI ניתן להרחבה הוא אות מערכת שמופעל על ידי שינויים בחומרה או בתוכנה, ויכול לשנות את המצב של חלונית. האירועים האלה מודיעים למסגרת על מקרים שדורשים תגובה בממשק המשתמש. כדי לקבל שליטה מדויקת יותר במצבי החלונית, אפשר גם להגדיר אירועים בהתאמה אישית, בנוסף לאירועים מובנים של המערכת.
המבנה של אירוע
מזהה ייחודי (ID) חובה שמזהה אירוע. המזהה הזה מסווג את סוג המופע, כמו _System_AppOpenEvent
או _System_PanelEmptyEvent
.
בנוסף למזהה הזה, אירוע יכול להכיל אסימונים, צמדי מפתח/ערך, כדי לספק הקשר ופרטים לגבי האירוע. האסימונים האלה מאפשרים סינון מדויק יותר של אירועים, ומאפשרים להפעיל מעברים או פעולות רק בתנאים ספציפיים.
האסימונים מועברים לאירוע כרשימה של צמדי מפתח/ערך שמופרדים באמצעות נקודה-ופסיק (;
). הנה רשימת המפתחות שנתמכים על ידי המערכת:
מפתח | תיאור |
---|---|
panelId |
מזהה חלונית ספציפית בממשק המשתמש שמשויכת לאירוע. |
component |
מציין את שם הרכיב, כמו פעילות שמקושרת לאירוע. |
package |
שם החבילה שקשורה לאירוע. |
panelToVariantId |
מציין את וריאנט היעד של חלונית בהקשרים ספציפיים. משתמשים במאפיין הזה כדי להפעיל אנימציות מדורגות על ידי האזנה למעבר בין חלוניות. לדוגמה, הפעלת המעבר של חלונית ב' למצב סגור כשחלונית א' עוברת למצב פתוח. |
לדוגמה:
"component=com.android.app;panelId=panel1"
לוגיקה של התאמת אירועים
כשאירוע נשלח, הוא צריך להתאים לקריטריונים מוגדרים כדי להפעיל מעבר או פעולה. תהליך ההתאמה מתבצע בשני שלבים:
התאמה מדויקת של
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 for
com.android.myapp`.
עם זאת, ההתאמה תיכשל אם האירוע שנשלח הוא id="app_open"
, panelId="panel1"
או component="com.android.yourapp.Activity"
.
למרות ש-id
ו-panelId
זהים, component
לא שווה ל-component
במעבר – com.android.myapp
– לא זהה ל-com.android.yourapp
באירוע שנשלח.
טריגר מעבר
יכול להיות שמעבר יהיה התאמה, אבל זה לא אומר שהוא יופעל. אפשר להפעיל רק מעבר אחד לכל אירוע. ממשק משתמש ניתן לשיפור נועד להפעיל רק את ההתאמה הקרובה ביותר.
לדוגמה, אם יש התאמה בין שני מעברים – אחד עם שם רכיב ואחד בלי שם רכיב -m
– רק המעבר עם שם הרכיב מופעל.
שליחה וטיפול באירועים
האירועים הם מרכזיים להתנהגות הדינמית של ממשק המשתמש שניתן להתאמה. אפשר לשלוח אירועים מממשק המשתמש של המערכת או מתהליכים חיצוניים באמצעות intent.
אירועי מערכת
ה-framework מגדיר כמה אירועים במערכת שמסייעים בפעולות האלה:
מאפיין | תיאור |
---|---|
_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 ) |
האירוע נשלח כשחלונית ספציפית מתרוקנת, והוא כולל את הערך האירוע הזה חשוב לשחזור שגיאות ולפתיחה מחדש של אפליקציות כאשר תוכן משויך קורס או מסתיים באופן בלתי צפוי, כדי למנוע את הצגת חלוניות ריקות בממשק המשתמש. לדוגמה, אם אפליקציית |
_System_EnterSuwEvent ( SYSTEM_ENTER_SUW_EVENT_ID ) |
מציין את המערכת שנכנסת לאשף ההגדרה (SUW). האירוע הזה מסמן שהמערכת מוכנה, ואפשר להגדיר אותו כך שיפעיל אפליקציות או יציג חלוניות ייעודיות אחרי שהמערכת תאותחל. כדי להיכנס למצב מערכת קריטי כזה, צריך אירוע ייעודי שיפעיל את ההתאמות או הפעולות המתאימות בממשק המשתמש. |
_System_ExitSuwEvent ( SYSTEM_EXIT_SUW_EVENT_ID ) |
מציין שהמערכת יוצאת מאשף ההגדרה (SUW). בדומה ל-_System_EnterSuwEvent , האירוע הזה מאפשר למערכת להגיב להשלמת תהליך ההגדרה על ידי הפעלת אפליקציות ברירת מחדל או מעבר לממשק משתמש רגיל. |
_System_OnAnimationEndEvent ( SYSTEM_ON_ANIMATION_END_EVENT_ID ) |
מופעל כשסיימתם אנימציה בממשק המשתמש. אפשר להשתמש באירוע הזה כדי להפעיל פעולות או שינויים במצב שקורים אחרי השלמת מעבר חזותי.
האירוע הזה מכיל טוקן של |