รายการช่วยให้ผู้ใช้เลือกรายการจากชุดตัวเลือกในอุปกรณ์ Wear OS ได้
อุปกรณ์ Wear OS จํานวนมากใช้หน้าจอทรงกลม ซึ่งทําให้มองเห็นรายการในรายการที่ปรากฏใกล้กับด้านบนและด้านล่างของหน้าจอได้ยากขึ้น ด้วยเหตุนี้ Compose สำหรับ Wear OS จึงมีคลาส LazyColumn
เวอร์ชันที่เรียกว่า TransformingLazyColumn
ซึ่งรองรับการปรับขนาดและการเปลี่ยนรูปแบบภาพเคลื่อนไหว
เมื่อรายการย้ายไปยังขอบ รายการเหล่านั้นจะเล็กลงและจางหายไป
หากต้องการเพิ่มเอฟเฟกต์การปรับขนาดและการเลื่อน ให้ใช้ Modifier.transformedHeight
เพื่ออนุญาตให้ Compose คำนวณการเปลี่ยนแปลงความสูงเมื่อรายการเลื่อนผ่านหน้าจอ และ transformation = SurfaceTransformation(transformationSpec)
เพื่อใช้เอฟเฟกต์ภาพ ซึ่งรวมถึงการปรับขนาดรายการให้เล็กลงเพื่อให้ตรงกับรายการก่อนหน้า
ภาพเคลื่อนไหวต่อไปนี้แสดงการเปลี่ยนแปลงขนาดและความโปร่งแสงขององค์ประกอบขณะที่เคลื่อนไหวไปตามหน้าจอ
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้างรายการโดยใช้เลย์เอาต์TransformingLazyColumn
เพื่อสร้างเนื้อหาที่ดูดีในหน้าจอ Wear OS ขนาดต่างๆ เช่น ในตัวอย่างโค้ดต่อไปนี้ ระบบจะเพิ่มการเว้นวรรคที่จำเป็นให้กับองค์ประกอบแรกและองค์ประกอบสุดท้ายของรายการที่ตั้งค่าไว้ใน contentPadding
ของ TransformingLazyColumn
หากต้องการให้ตัวบ่งชี้การเลื่อนแสดง ให้แชร์ columnState
ระหว่าง ScreenScaffold
กับ TransformingLazyColumn
ดังนี้
val columnState = rememberTransformingLazyColumnState() val contentPadding = rememberResponsiveColumnPadding( first = ColumnItemType.ListHeader, last = ColumnItemType.Button, ) val transformationSpec = rememberTransformationSpec() ScreenScaffold( scrollState = columnState, contentPadding = contentPadding ) { contentPadding -> TransformingLazyColumn( state = columnState, contentPadding = contentPadding ) { item { ListHeader( modifier = Modifier.fillMaxWidth().transformedHeight(this, transformationSpec), transformation = SurfaceTransformation(transformationSpec) ) { Text(text = "Header") } } // ... other items item { Button( modifier = Modifier.fillMaxWidth().transformedHeight(this, transformationSpec), transformation = SurfaceTransformation(transformationSpec), onClick = { /* ... */ }, icon = { Icon( imageVector = Icons.Default.Build, contentDescription = "build", ) }, ) { Text( text = "Build", maxLines = 1, overflow = TextOverflow.Ellipsis, ) } } } }
เพิ่มเอฟเฟกต์การกระแทกและพุ่ง
หากต้องการเพิ่มลักษณะการติดและปัด เราขอแนะนำให้ใช้ScalingLazyColumn
เอฟเฟกต์นี้ช่วยให้ผู้ใช้ไปยังรายการต่างๆ ในรายการได้อย่างแม่นยำยิ่งขึ้น ทั้งยังช่วยให้ไปยังรายการต่างๆ ในรายการยาวได้เร็วขึ้นด้วย
หากต้องการเพิ่มเอฟเฟกต์นี้ลงใน ScalingLazyColumn
เวอร์ชัน Horologist ให้ตั้งค่าพารามิเตอร์ rotaryMode
ของ columnState
เป็น RotaryWithSnap
ดังที่แสดงในข้อมูลโค้ดต่อไปนี้
val columnState = rememberResponsiveColumnState( // ... // ... rotaryMode = ScalingLazyColumnState.RotaryMode.Snap ) ScreenScaffold(scrollState = columnState) { ScalingLazyColumn( columnState = columnState ) { // ... // ... } }
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- Codelab ของ Compose สำหรับ Wear OS
- รายการและตารางกริด
- การใช้มุมมองในเครื่องมือเขียน