Bir Bakışta temasını uygulama

Glance, renk temasını yönetmek için bir API sunar. Diğer stil özellikleri için: (ör. TextStyle) üst düzey değişkenleri bildirin.

Renk ekle

Glance, kullanıma hazır Malzeme renkleri uygulamasını sağlar. To yerleşik tema, üst düzey composable'ınızı şurada gösterildiği gibi GlanceTheme ile sarmalayın: aşağıdaki örneğe bakın.

Dinamik renkleri destekleyen cihazlarda bu tema renklerini kullanabilirsiniz. Diğer cihazlarda bu özellik Malzeme tasarımına döner. temel tema. Ambalajdaki renklerle stil vermek için GlanceTheme.colors kullanın tıklayın. Temadaki bu değerleri, renk gereken her yerde kullanabilirsiniz.

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

    provideContent {
        GlanceTheme {
            MyContent()
        }
    }
}

@Composable
private fun MyContent() {

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

    )
}

Temayı özelleştirmek için colors öğesini GlanceTheme öğesine aktarabilirsiniz. Bir Bakışta androidx.glance:glance-material birlikte çalışabilirlik kitaplığını sağlar Malzeme 2 ve Malzeme 3 renkleri için androidx.glance:glance-material3 destek.

Örneğin, uygulamanızın mevcut malzeme renklerini ColorProviders Aşağıdaki snippet'te gösterildiği gibi, Bir Bakışta renk şeması oluşturmak için kullanılan API:

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

Şemadaki tüm tonları kapsayan GlanceTheme renklerini girin composables, aşağıdaki örnekte gösterildiği gibi:

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

Desteklendiğinde duvar kağıdından dinamik renkler kullanmayı tercih ederseniz uygulamanızın renk şemasını koşullu olarak geçirebilirsiniz GlanceTheme. Bu, aşağıdaki snippet'te gösterilmektedir:

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

Şekil ekleme

Uygulama widget'ınıza özel şekiller veya gölgeler eklemek için Android Drawables API'si.

Örneğin, aşağıdaki snippet'te bir çizimin (şekil) nasıl oluşturulacağı gösterilmektedir:

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

Bunu, hedef composable'a sağlayın:

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