ווידג'טים של אפליקציות הם תצוגות מוקטנות של אפליקציות שאפשר להטמיע באפליקציות אחרות – כמו מסך הבית – ולקבל עדכונים תקופתיים. התצוגות האלה נקראות ווידג'טים בממשק המשתמש, ואפשר לפרסם אותן באמצעות ספק ווידג'טים לאפליקציות (או ספק ווידג'טים). רכיב של אפליקציה שמכיל ווידג'טים אחרים נקרא מארח ווידג'טים של אפליקציה (או מארח ווידג'טים). איור 1 מציג דוגמה לווידג'ט של מוזיקה:
במאמר הזה מוסבר איך לפרסם ווידג'ט באמצעות ספק ווידג'טים. במאמר יצירת מארח ווידג'טים יש פרטים על יצירת AppWidgetHost משלכם לאירוח ווידג'טים של אפליקציות.
מידע על עיצוב הווידג'ט זמין במאמר סקירה כללית על ווידג'טים של אפליקציות.
רכיבי הווידג'ט
כדי ליצור ווידג'ט, צריך את הרכיבים הבסיסיים הבאים:
- אובייקט
AppWidgetProviderInfo - מתאר את המטא-נתונים של הווידג'ט, כמו הפריסה, תדירות העדכון והסיווג
AppWidgetProvider. AppWidgetProviderInfoמוגדר ב-XML, כפי שמתואר במסמך הזה. - כיתה
AppWidgetProvider - הגדרת השיטות הבסיסיות שמאפשרות לכם להתממשק עם הווידג'ט באופן פרוגרמטי. באמצעותה, תקבלו שידורים כשהווידג'ט יעודכן, יופעל, יושבת או יימחק. מצהירים על
AppWidgetProviderבמניפסט ואז מטמיעים אותו, כמו שמתואר במסמך הזה. - הצגת הפריסה
- הגדרת הפריסה הראשונית של הווידג'ט. הפריסה מוגדרת ב-XML, כפי שמתואר במסמך הזה.
באיור 2 מוצג איך הרכיבים האלה משתלבים בתהליך העיבוד הכולל של הווידג'ט של האפליקציה.
אם הווידג'ט שלכם צריך הגדרת משתמש, צריך להטמיע את פעילות ההגדרה של הווידג'ט של האפליקציה. הפעילות הזו מאפשרת למשתמשים לשנות את הגדרות הווידג'ט – למשל, אזור הזמן של ווידג'ט השעון.
- החל מ-Android 12 (רמת API 31), אפשר לספק הגדרת ברירת מחדל ולאפשר למשתמשים להגדיר מחדש את הווידג'ט מאוחר יותר. פרטים נוספים זמינים במאמרים שימוש בהגדרת ברירת המחדל של הווידג'ט ואיך מאפשרים למשתמשים להגדיר מחדש ווידג'טים שהוצבו.
- ב-Android 11 (רמת API 30) ומטה, הפעילות הזו מופעלת בכל פעם שהמשתמש מוסיף את הווידג'ט למסך הבית.
אנחנו ממליצים גם על השיפורים הבאים: פריסות גמישות של ווידג'טים, שיפורים שונים, ווידג'טים מתקדמים, ווידג'טים של אוספים ויצירת מארח ווידג'טים.
הצהרה על קובץ ה-XML של AppWidgetProviderInfo
הגדרת הגדרות המטא-נתונים (כמו גדלי תאים שמוגדרים כברירת מחדל, אילוצים לשינוי גודל ותדירות עדכונים) זהה לחלוטין גם בתצוגות רגילות וגם בווידג'טים שמבוססים על תצוגה מהירה.
בקטע Declare the AppWidgetProviderInfo XML במאמר בנושא Glance, מוסבר איך להגדיר את קובץ ה-XML של המטא-נתונים.
שימוש במחלקה AppWidgetProvider לטיפול בשידורים של ווידג'טים
המנגנונים של מקלט השידור בפלטפורמה, המסננים של הצהרת המניפסט ולולאות האירועים של מחזור החיים מאוחדים מתחת לפלטפורמה. בפיתוח בגישת Compose-first, השידורים האלה מתואמים באמצעות רכיב ה-wrapper GlanceAppWidgetReceiver.
כדי להבין איך לרשום את ה-receiver במניפסט וליישם שינויים בהגדרות ברירת המחדל של מחזור החיים שתואמים ל-Hilt, אפשר לעיין בקטע Use the AppWidgetProvider class to handle broadcasts (שימוש במחלקה AppWidgetProvider לטיפול בשידורים) במסמכי התיעוד של Glance.
יצירת פריסת הווידג'ט
צריך להגדיר פריסה ראשונית לווידג'ט ב-XML ולשמור אותה בספרייה res/layout/ של הפרויקט. פרטים נוספים זמינים בהנחיות לעיצוב.
אם אתם מכירים פריסות, קל ליצור את פריסת הווידג'ט. עם זאת, חשוב לדעת שפריסות הווידג'טים מבוססות על RemoteViews, שלא תומך בכל סוג של פריסה או ווידג'ט תצוגה.
אי אפשר להשתמש בתצוגות בהתאמה אישית או בתת-מחלקות של התצוגות שנתמכות על ידי RemoteViews.
RemoteViews תומך גם ב-ViewStub, שהוא View בלתי נראה בגודל אפס שאפשר להשתמש בו כדי להרחיב משאבי פריסה בזמן ריצה.
תמיכה בהתנהגות עם שמירת מצב
ב-Android 12 נוספה תמיכה בהתנהגות עם שמירת מצב באמצעות הרכיבים הקיימים הבאים:
הווידג'ט עדיין בלי שמירת מצב. האפליקציה צריכה לשמור את המצב שלה ולהירשם לאירועים של שינוי מצב.
בדוגמת הקוד הבאה אפשר לראות איך מטמיעים את הרכיבים האלה.
// Check the view. remoteView.setCompoundButtonChecked(R.id.my_checkbox, true) // Check a radio group. remoteView.setRadioGroupChecked(R.id.my_radio_group, R.id.radio_button_2) // Listen for check changes. The intent has an extra with the key // EXTRA_CHECKED that specifies the current checked state of the view. remoteView.setOnCheckedChangeResponse( R.id.my_checkbox, RemoteViews.RemoteResponse.fromPendingIntent(onCheckedChangePendingIntent) )
צריך לספק שני פריסות: אחת שמטרגטת מכשירים עם Android 12 ומעלה ב-res/layout-v31, והשנייה שמטרגטת גרסאות קודמות של Android 11 ומטה בתיקיית ברירת המחדל res/layout.
הטמעה של פינות מעוגלות
חישוב הרקע החיצוני והרדיוסים הפנימיים הפרופורציונליים הוא סטנדרטי ומשותף. בפיתוח בגישת Compose-first, אפשר להגדיר את זה באופן דינמי ב-Kotlin לצד משאבי עיצוב בהתאמה אישית.
כדי להטמיע פינות מעוגלות או להגדיר סגנונות דינמיים למכשירי Android ישנים יותר, אפשר לעיין בקטע הטמעה של פינות מעוגלות במאמר בנושא Glance, שמתמקד ב-Compose.