پیاده‌سازی زمینه Glance

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 ارائه می‌دهد.

برای مثال، رنگ‌های Material موجود برنامه‌تان را به ColorProviders API ارائه دهید تا طرح رنگ 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 استفاده کنید.

برای مثال، قطعه کد زیر نحوه ایجاد یک drawable (یک شکل) را نشان می‌دهد:

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