Style API เป็นกระบวนทัศน์ใหม่สำหรับการปรับแต่งหรือ "จัดรูปแบบ" องค์ประกอบและ คอมโพเนนต์ใน Jetpack Compose ซึ่งเดิมจะทำผ่าน ตัวแก้ไข โดยออกแบบมาเพื่อปลดล็อกการปรับแต่งที่ลึกซึ้งและง่ายดายยิ่งขึ้น
Styles API ช่วยเพิ่มความยืดหยุ่นในรูปแบบต่างๆ ปรับปรุงประสิทธิภาพ และช่วยให้สร้างระบบการออกแบบที่กำหนดเองได้ง่ายขึ้น แม้ว่าคุณจะไม่ ต้องการคอมโพเนนต์ที่กำหนดเอง แต่ Styles API ก็มีประโยชน์มากมายสำหรับระบบการออกแบบของคุณ
ข้อแตกต่างที่สำคัญคือสไตล์ไม่ได้ใช้แทนตัวแก้ไข แต่ใช้แทนพารามิเตอร์การจัดรูปแบบ เช่น ระยะเว้นขอบและสี เราขอแนะนำให้เปลี่ยนไปใช้สไตล์แทนพารามิเตอร์เพื่อเพิ่มความยืดหยุ่นและประสิทธิภาพ
ประโยชน์ของสไตล์
- ลดความซับซ้อนของการจัดรูปแบบตามสถานะ: API มีวิธีที่กระชับและ ประกาศได้มากขึ้นในการกำหนดรูปแบบที่จะเปลี่ยนไปตามสถานะต่างๆ (เช่น วางเมาส์ โฟกัส กด) ซึ่งช่วยลดโค้ดบอยเลอร์เพลตได้อย่างมาก เมื่อเทียบกับระบบตัวแก้ไข
- ปรับปรุงการเปลี่ยนสถานะภาพเคลื่อนไหว: Style API ช่วยให้สามารถใช้ภาพเคลื่อนไหวในตัวของพร็อพเพอร์ตี้สไตล์ระหว่างสถานะต่างๆ ได้โดยมีลักษณะประสิทธิภาพที่เหมาะสม ซึ่งจะหลีกเลี่ยงการจัดองค์ประกอบใหม่ที่เกิดขึ้นกับแนวทาง
animateColorAsStateปัจจุบัน - เพิ่มความคล่องตัวให้ API ของคอมโพเนนต์: การเปิดตัวพารามิเตอร์ Style เดียวสำหรับการปรับแต่งช่วยลดความซับซ้อนของ API ของคอมโพเนนต์ได้อย่างมากและเพิ่มความยืดหยุ่นมากขึ้น
- การจัดองค์ประกอบใหม่น้อยลงส่งผลให้ประสิทธิภาพดีขึ้นเมื่อเทียบกับตัวแก้ไข: สไตล์ จะทํางานในเฟสการวาดและการจัดเลย์เอาต์ของ Compose โดยข้ามเฟส การจัดองค์ประกอบ
- ชุด API ที่เป็นมาตรฐานมากขึ้น: ชุดพร็อพเพอร์ตี้รูปแบบมาตรฐาน ทำให้คอมโพเนนต์ใดก็ได้ปรับแต่งสไตล์ได้
แนวคิดหลัก
| แนวคิด | คำอธิบาย |
|---|---|
Style |
อินเทอร์เฟซที่กำหนดลักษณะขององค์ประกอบ UI โดยมีชุดพร็อพเพอร์ตี้ที่จัดรูปแบบได้มาตรฐาน ซึ่งคล้ายกับสไตล์ CSS และปรับแต่งได้ในเครื่องหรือผ่านธีม สไตล์จะเขียนทับกัน การตั้งค่าพร็อพเพอร์ตี้ 2 ครั้ง (เช่น background()) จะส่งผลให้มีค่าสุดท้ายค่าเดียว |
StyleScope |
ขอบเขตของตัวรับสำหรับฟังก์ชัน applyStyle() ภายในสไตล์ โดยมีฟังก์ชันสำหรับกำหนดพร็อพเพอร์ตี้ภาพ (ระยะห่างจากขอบ พื้นหลัง เส้นขอบ ฯลฯ) และเข้าถึง StyleState ปัจจุบัน |
StyleState |
ระบุสถานะ (เช่น isEnabled, isPressed, isChecked, สถานะที่กำหนดเอง) ที่คุณใช้ได้ภายในสไตล์เพื่อกำหนดรูปแบบตามเงื่อนไข |
เริ่มต้นใช้งาน: เพิ่มการอ้างอิง
หากต้องการใช้ API ในโปรเจ็กต์ของคุณเอง โปรดตรวจสอบว่าคุณใช้ Jetpack Compose Foundation เวอร์ชันอัลฟ่าล่าสุด
ในไฟล์ settings.gradle.kts ให้เพิ่ม
ที่เก็บ Maven ของสแนปชอตลงในรายการที่เก็บที่จะใช้
ตั้งค่าเวอร์ชันของ Compose เป็น 1.11.0-alpha06 ใน libs.versions.toml หรือในไฟล์ app/build.gradle.kts
โดยตรง
compose = "1.11.0-alpha06"
androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime", version.ref = "compose" }
androidx-compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "compose" }
androidx-compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics", version.ref = "compose" }
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "compose" }
androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview", version.ref = "compose" }
androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest", version.ref = "compose" }
androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4", version.ref = "compose" }
androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "compose" }