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

‫Glance یک «میانای برنامه‌سازی کاربردی» برای مدیریت زمینه رنگ ارائه می‌دهد. برای دیگر مشخصه‌های سبک، مثل TextStyle، متغیرهای سطح بالا را اعلام کنید.

افزودن رنگ‌ها

‫Glance پیاده‌سازی رنگ‌های Material را به‌صورت آماده ارائه می‌دهد. برای استفاده از زمینه داخلی، ترکیب‌پذیر سطح بالای خود را با GlanceTheme بپیچید، همان‌طور که در مثال زیر نشان داده شده است.

در دستگاه‌هایی که از رنگ‌های پویا پشتیبانی می‌کنند، این زمینه از رنگ‌های پلاتفرم مختص کاربر مشتق می‌شود. در دستگاه‌های دیگر، این به زمینه پایه «ماتریال» برمی‌گردد. از 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 منتقل کنید. «نگاه سریع» کتابخانه قابلیت همکاری androidx.glance:glance-material را برای Material 2 و androidx.glance:glance-material3 را برای پشتیبانی از رنگ‌های Material 3 ارائه می‌دهد.

برای مثال، رنگ‌های موجود برنامه خود را به ColorProviders 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
    )
}

رنگ‌های طرح را به 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)
)