Glance מספק API לניהול ערכת הצבעים. למאפייני סגנון אחרים, כמו TextStyle, צריך להצהיר על משתנים ברמה העליונה.
הוספת צבעים
Glance מספק הטמעה של צבעי Material באופן מובנה. כדי להשתמש בעיצוב המובנה, צריך לעטוף את הפונקציה הקומפוזבילית ברמה העליונה ב-GlanceTheme, כמו בדוגמה הבאה.
במכשירים שתומכים בצבעים דינמיים, העיצוב הזה נגזר מצבעי הפלטפורמה הספציפיים למשתמש. במכשירים אחרים, העיצוב חוזר לעיצוב הבסיסי של Material. משתמשים ב-GlanceTheme.colors כדי לעצב עם צבעים מהעיצוב שעוטף את הרכיב. אפשר להשתמש בערכים האלה מהעיצוב בכל מקום שבו צריך צבע.
override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { GlanceTheme { MyContent() } } } @Composable private fun MyContent() { Image( colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), // ... ) }
כדי להתאים אישית את העיצוב, אפשר להעביר את colors אל GlanceTheme. ב-Glance יש את ספריית יכולת הפעולה ההדדית androidx.glance:glance-material ל-Material 2, ואת androidx.glance:glance-material3 לתמיכה בצבעים של Material 3.
לדוגמה, אתם יכולים לספק ל-API של ColorProviders את צבעי ה-Material הקיימים של האפליקציה כדי ליצור ערכת צבעים של Glance, כמו שמוצג בקטע הקוד הבא:
// Remember, use the Glance imports // import androidx.glance.material3.ColorProviders // Example Imports from your own app // import com.example.myapp.ui.theme.DarkColors // import com.example.myapp.ui.theme.LightColors object MyAppWidgetGlanceColorScheme { val colors = ColorProviders( light = LightColors, dark = DarkColors ) }
מזינים את הצבעים מהסכימה ב-GlanceTheme שעוטף את כל הרכיבים הניתנים ליצירה, כמו בדוגמה הבאה:
override suspend fun provideGlance(context: Context, id: GlanceId) { // ... provideContent { GlanceTheme(colors = MyAppWidgetGlanceColorScheme.colors) { MyContent() } } } @Composable private fun MyContent() { Image( colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), // ... ) }
אם אתם מעדיפים להשתמש בצבעים דינמיים מהטפט כשהם נתמכים, ובערכת הצבעים של האפליקציה במקרים אחרים, אתם יכולים להעביר את ערכת הצבעים של האפליקציה באופן מותנה ב-GlanceTheme. כמו שמוצג בקטע הקוד הבא:
override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { GlanceTheme( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) GlanceTheme.colors else MyAppWidgetGlanceColorScheme.colors ) { MyContent() } } } @Composable private fun MyContent() { // ... Image( colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), // ... ) }
הוספת צורות
כדי להוסיף צורות או צללים מיוחדים לווידג'ט של האפליקציה, משתמשים ב-Android Drawables API.
לדוגמה, קטע הקוד הבא מראה איך ליצור רכיב שניתן לשרטוט (צורה):
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="16dp"/>
<stroke android:color="@color/outline_color" android:width="1dp"/>
</shape>
מציינים אותו ברכיב הקומפוזבילי של היעד:
GlanceModifier.background( imageProvider = ImageProvider(R.drawable.button_outline) )