Glance থিম প্রয়োগ করা

কালার থিম ম্যানেজ করার জন্য Glance একটি API প্রদান করে। অন্যান্য স্টাইল অ্যাট্রিবিউটের জন্য, যেমন TextStyle, টপ-লেভেল ভেরিয়েবল ঘোষণা করুন।

রঙ যোগ করুন

Glance-এ বক্সের বাইরে Material কালার প্রয়োগ করার সুবিধা দেওয়া হয়। বিল্ট-ইন থিম ব্যবহার করতে, নিচের উদাহরণে দেখানো GlanceTheme-এর মতো আপনার টপ লেভেল কম্পোজ করার উপযুক্ত আইটেমকে র‍্যাপ করুন।

যেসব ডিভাইসে ডায়নামিক কালার কাজ করে, এই থিমটি ব্যবহারকারী-নির্দিষ্ট প্ল্যাটফর্ম কালার থেকে নেওয়া হয়। অন্যান্য ডিভাইসে, এটি Material baseline থিমে ফিরে যায়। মোড়কযুক্ত থিমের রঙ দিয়ে স্টাইল করতে 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 Material 2-এর জন্য androidx.glance:glance-material ইন্টারঅপারেবিলিটি লাইব্রেরি এবং Material 3 কালারের জন্য androidx.glance:glance-material3 সাপোর্ট প্রদান করে।

যেমন, Glance কালার স্কিম তৈরি করতে, আপনার অ্যাপের বর্তমান মেটেরিয়াল কালার 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)
)