รายการช่วยให้ผู้ใช้เลือกรายการจากชุดตัวเลือกในอุปกรณ์ Wear OS ได้
อุปกรณ์ Wear OS หลายรุ่นใช้หน้าจอทรงกลม ซึ่งทำให้ดูรายการที่ปรากฏใกล้ด้านบนและด้านล่างของหน้าจอได้ยากขึ้น
ด้วยเหตุนี้ Compose สำหรับ Wear OS จึงมีLazyColumn
คลาสเวอร์ชันหนึ่งชื่อ TransformingLazyColumn
ซึ่งรองรับการปรับขนาดและภาพเคลื่อนไหวแบบมอร์ฟ
เมื่อรายการเลื่อนไปที่ขอบ รายการจะเล็กลงและจางหายไป
หากต้องการเพิ่มเอฟเฟกต์การปรับขนาดและการเลื่อน ให้ใช้ Modifier.transformedHeight
เพื่อให้ Compose คำนวณการเปลี่ยนแปลงความสูงขณะที่รายการเลื่อนผ่าน
หน้าจอ และใช้ transformation = SurfaceTransformation(transformationSpec)
เพื่อใช้
เอฟเฟกต์ภาพ รวมถึงการลดขนาดรายการให้ตรงกับรายการ
ก่อนหน้า
ใช้ TransformationSpec
ที่กำหนดเองสำหรับคอมโพเนนต์ที่ไม่ใช้
transformation
เป็นพารามิเตอร์ เช่น Text
ภาพเคลื่อนไหวต่อไปนี้แสดงวิธีที่ขนาดและความโปร่งใสขององค์ประกอบเปลี่ยนแปลงเมื่อ เคลื่อนที่ไปตามหน้าจอ
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้างรายการโดยใช้เลย์เอาต์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
- รายการและตารางกริด
- การใช้มุมมองในฟีเจอร์ช่วยเขียน