Wdrażanie motywu W skrócie

Glance udostępnia interfejs API do zarządzania motywem kolorystycznym. W przypadku innych atrybutów stylu np. TextStyle, zadeklaruj zmienne najwyższego poziomu.

Dodaj kolory

Glance umożliwia bezpośrednią implementację kolorów Material. Aby użyć funkcji z wbudowanym motywem, uzupełnij funkcję kompozycyjną najwyższego poziomu za pomocą funkcji GlanceTheme, jak pokazano to tutaj: następujący przykład.

Na urządzeniach obsługujących kolory dynamiczne motyw ten jest generowany na podstawie charakterystyczne dla użytkownika. Na innych urządzeniach wartość domyślna to Material. motyw bazowy. Użyj kodu GlanceTheme.colors, aby dodać styl do kolorów z zapakowanego produktu motyw. Tych wartości możesz używać z motywu wszędzie tam, gdzie potrzebny jest kolor.

override suspend fun provideGlance(context: Context, id: GlanceId) {

    provideContent {
        GlanceTheme {
            MyContent()
        }
    }
}

@Composable
private fun MyContent() {

    Image(
        colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary),
        // ...

    )
}

Aby dostosować motyw, możesz przekazać colors do GlanceTheme. W skrócie udostępnia bibliotekę interoperacyjności androidx.glance:glance-material dla Kolor Material 2 i androidx.glance:glance-material3 w przypadku koloru Material 3 .

Na przykład w tabeli ColorProviders podaj dotychczasowe kolory materiału aplikacji API do tworzenia schematu kolorów Glance, jak pokazano w tym fragmencie:

// 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
    )
}

Podaj kolory od schematu do elementu GlanceTheme, który pasuje do elementów kompozycyjnych, jak w tym przykładzie:

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),
        // ...
    )
}

Jeśli wolisz używać dynamicznych kolorów tapety, gdy jest ona obsługiwana, schemat kolorów aplikacji, w przeciwnym razie możesz warunkowo przekazać schemat kolorów aplikacji w GlanceTheme. Widać to w tym fragmencie:

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),
        // ...
    )
}

Dodaj kształty

Aby dodać specjalne kształty lub cienie do widżetu aplikacji, użyj Androida Interfejs API Drawables.

Na przykład ten fragment kodu pokazuje, jak utworzyć obiekt rysowalny (kształt):

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="16dp"/>
    <stroke android:color="@color/outline_color" android:width="1dp"/>
</shape>

Podaj ją do docelowej funkcji kompozycyjnej:

GlanceModifier.background(
    imageProvider = ImageProvider(R.drawable.button_outline)
)