ใน Jetpack Compose Glimmer คอมโพเนนต์ Icon เป็นองค์ประกอบ UI สำหรับ
การแสดงไอคอนสีเดียว ไอคอนจะจัดการการปรับสีและการปรับขนาดอย่างชาญฉลาดเพื่อให้ยังคงอ่านได้และสอดคล้องกับGlimmerThemeในเชิงภาพ
ขนาด
แม้ว่าไอคอนจะมีขนาดเริ่มต้นตามที่ LocalIconSize ระบุไว้ แต่คุณก็ยัง
ใช้ไอคอน 3 ขนาดที่ระบุไว้เพื่อกำหนดขนาดที่เฉพาะเจาะจงได้ นอกจากนี้ ระบบยังใช้ขนาดเหล่านี้โดยค่าเริ่มต้นสำหรับบริบทต่อไปนี้ด้วย
| โทเค็นขนาด | การใช้เริ่มต้น |
|---|---|
|
สำหรับรายการมาตรฐานหรือชิปขนาดเล็ก |
|
สำหรับไอคอนแบบสแตนด์อโลนและชิปชื่อ |
|
สำหรับคอมโพเนนต์ที่มีการเน้นสูง เช่น การ์ด |
แหล่งที่มาของไอคอน
ไอคอนสามารถรับ ImageVector, ImageBitmap หรือ Painter เป็น
แหล่งที่มาได้ เมื่อกำหนดไอคอนของคุณเอง ให้ใช้ ImageVector หากเป็นไปได้เพื่อ
ส่งเสริมการแสดงผลที่คมชัดในทุกขนาดบนแว่นตาแสดงผล
การปรับสีและการย้อมสี
- การปรับสีอัตโนมัติ: ไอคอนจะกำหนดสีตาม
LocalContentColorที่ระบุโดยพื้นผิวระดับบนสุดLocalContentColorที่ระบุโดยพื้นผิวระดับบนสุด เช่นsurfaceหรือButton - การย้อมสีด้วยตนเอง: ใช้พารามิเตอร์
tintเพื่อใช้สีที่เฉพาะเจาะจง - ชิ้นงานหลายสี: สำหรับไอคอนที่ไม่ควรมีการปรับสี (เช่น โลโก้แบรนด์หลายสี) ให้ตั้งค่า
tint = Color.Unspecified - รูปภาพทั่วไป: สำหรับภาพถ่ายหรือภาพทั่วไปที่ไม่เป็นไปตามกฎการปรับขนาดและการปรับสีของไอคอน ให้ใช้
androidx.compose.foundation.Imageมาตรฐานแทน
ตัวอย่าง: ไอคอนพื้นฐานภายในพื้นผิว
โค้ดต่อไปนี้จะสร้างไอคอนที่วางไว้ภายในพื้นผิววงกลมโดยใช้ สีหลักของธีม
@Composable fun IconSampleUsage() { GlimmerLazyColumn( modifier = Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, ) { item { IconSizesSample() } item { Icon( FavoriteIcon, "Localized description", Modifier.surface( shape = CircleShape, color = GlimmerTheme.colors.primary, border = null, ) .padding(12.dp), ) } } }
ตัวอย่าง: ไอคอนที่มีขนาดแตกต่างกัน
โค้ดต่อไปนี้แสดงขนาดไอคอนต่างๆ
@Composable fun IconSizesSample() { val iconSizes = GlimmerTheme.iconSizes Column( verticalArrangement = Arrangement.spacedBy(20.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { Icon(FavoriteIcon, "Localized description", Modifier.size(iconSizes.small)) // medium is also the default size, defining explicitly for clarity Icon(FavoriteIcon, "Localized description", Modifier.size(iconSizes.medium)) Icon(FavoriteIcon, "Localized description", Modifier.size(iconSizes.large)) } }
ประเด็นสำคัญเกี่ยวกับโค้ด
- ขนาดของไอคอนแต่ละรายการจะได้รับการปรับแต่งโดยใช้
GlimmerTheme.iconSizesที่มีตัวแก้ไข สำหรับไอคอน ค่าเริ่มต้นคือGlimmerTheme.iconSizes.mediumใช้ขนาดเหล่านี้แทนการ ฮาร์ดโค้ดค่าเพื่อให้ UI สอดคล้องกัน - ระบุ
contentDescriptionที่แปลแล้วสำหรับไอคอนแต่ละรายการ ระบุคำอธิบายเหล่านี้เสมอ เว้นแต่ไอคอนจะเป็นเพียงภาพตกแต่ง