ใช้ธีมข้อมูลโดยย่อ

Glance มี API สำหรับจัดการธีมสี สำหรับแอตทริบิวต์รูปแบบอื่นๆ เช่น TextStyle ให้ประกาศตัวแปรระดับบนสุด

เพิ่มสี

Glance นำเสนอสี Material ให้ใช้งานตั้งแต่แกะกล่อง วิธีใช้ ธีมในตัว รวมระดับบนสุดของคุณ Composable ด้วย 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 สำหรับ วัสดุ 2 และ androidx.glance:glance-material3 สำหรับสีวัสดุ 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 ที่ครอบคลุมทั้งหมด Composable ดังที่ปรากฏในตัวอย่างต่อไปนี้

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

ระบุให้กับ Composable เป้าหมาย:

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