בקטעים הבאים מוסבר איך ליצור ווידג'ט פשוט של אפליקציה באמצעות 'בקצרה'.
הצהרה על AppWidget
במניפסט
אחרי השלמת שלבי ההגדרה, צריך להצהיר על AppWidget
המטא-נתונים באפליקציה שלכם.
- צריך לרשום את ספק הווידג'ט של האפליקציה בקובץ
AndroidManifest.xml
ואת קובץ המטא-נתונים המשויך:
<receiver android:name=".glance.MyReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/my_app_widget_info" />
</receiver>
- הרחבת המקלט
AppWidget
מ-GlanceAppWidgetReceiver
:
class MyAppWidgetReceiver : GlanceAppWidgetReceiver() { override val glanceAppWidget: GlanceAppWidget = TODO("Create GlanceAppWidget") }
הוספת המטא-נתונים של AppWidgetProviderInfo
בשלב הבא, מבצעים את השלב הזה כדי להוסיף את המטא-נתונים של AppWidgetProviderInfo
:
פועלים לפי ההוראות במדריך יצירת ווידג'ט פשוט כדי ליצור ולהגדיר את האפליקציה פרטי הווידג'ט בקובץ
@xml/my_app_widget_info
.ההבדל היחיד בתכונה 'בקצרה' הוא שאין
initialLayout
XML, אבל חייבים להגדיר אותה. אפשר להשתמש בפריסת הטעינה המוגדרת מראש שמופיעה הספרייה:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/glance_default_loading_layout">
</appwidget-provider>
הגדרה של GlanceAppWidget
יצירת מחלקה חדשה שנמצאת מ-
GlanceAppWidget
ומבטלת את ההגדרה של אמצעי תשלוםprovideGlance
. זו השיטה שבה אפשר לטעון נתונים שנדרש לעיבוד הווידג'ט:
class MyAppWidget : GlanceAppWidget() { override suspend fun provideGlance(context: Context, id: GlanceId) { // In this method, load data needed to render the AppWidget. // Use `withContext` to switch to another thread for long running // operations. provideContent { // create your AppWidget here Text("Hello World") } } }
- ליצור אותו ב-
glanceAppWidget
ב-GlanceAppWidgetReceiver
:
class MyAppWidgetReceiver : GlanceAppWidgetReceiver() { // Let MyAppWidgetReceiver know which GlanceAppWidget to use override val glanceAppWidget: GlanceAppWidget = MyAppWidget() }
הגדרת עכשיו AppWidget
באמצעות התכונה 'בקצרה'.
יצירת ממשק משתמש
קטע הקוד הבא מדגים איך יוצרים את ממשק המשתמש:
/* Import Glance Composables In the event there is a name clash with the Compose classes of the same name, you may rename the imports per https://kotlinlang.org/docs/packages.html#imports using the `as` keyword. import androidx.glance.Button import androidx.glance.layout.Column import androidx.glance.layout.Row import androidx.glance.text.Text */ class MyAppWidget : GlanceAppWidget() { override suspend fun provideGlance(context: Context, id: GlanceId) { // Load data needed to render the AppWidget. // Use `withContext` to switch to another thread for long running // operations. provideContent { // create your AppWidget here GlanceTheme { MyContent() } } } @Composable private fun MyContent() { Column( modifier = GlanceModifier.fillMaxSize() .background(GlanceTheme.colors.background), verticalAlignment = Alignment.Top, horizontalAlignment = Alignment.CenterHorizontally ) { Text(text = "Where to?", modifier = GlanceModifier.padding(12.dp)) Row(horizontalAlignment = Alignment.CenterHorizontally) { Button( text = "Home", onClick = actionStartActivity<MyActivity>() ) Button( text = "Work", onClick = actionStartActivity<MyActivity>() ) } } } }
דוגמת הקוד שצוינה למעלה:
- ברמה העליונה
Column
, הפריטים ממוקמים אנכית אחד אחרי כל פריט אחר. - השדה
Column
יורחב כדי שיתאים לשטח הזמין (באמצעותGlanceModifier
והתאמת התוכן שלו לראש הרשימה (verticalAlignment
) וממרכז אותו לרוחב (horizontalAlignment
). - התוכן של
Column
מוגדר באמצעות lambda. הסדר חשוב.
אפשר לשנות את ערכי ההתאמה או להחיל ערכי צירוף שונים (למשל מרווח פנימי) כדי לשנות את המיקום ואת הגודל של הרכיבים. מידע נוסף זמין בחומר העזר בנושא תיעוד לרשימה מלאה של הרכיבים, הפרמטרים והפרמטרים הזמינים של כל מחלקה.