在 Wear OS 设备上,用户可通过列表从一组选项中选择一个项目。
许多 Wear OS 设备都使用圆形屏幕,不方便用户查看靠近屏幕顶部和底部的列表项。因此,Compose for Wear OS 包含一个名为 TransformingLazyColumn
的 LazyColumn
类版本,该版本支持缩放和变形动画。当内容移动到边缘时,它们会变小并淡出。
如需添加缩放和滚动效果,请使用 Modifier.transformedHeight
允许 Compose 在项滚动浏览屏幕时计算高度变化,并使用 transformation = SurfaceTransformation(transformationSpec)
应用视觉效果,包括视觉上缩小项以与之前的项保持一致。
以下动画演示了元素在屏幕上移动时大小和透明度的变化过程:
以下代码段展示了如何使用TransformingLazyColumn
布局创建列表,以便创建在各种 Wear OS 屏幕尺寸上看起来都很棒的内容。例如,在以下示例代码中,它会向列表中设置在 TransformingLazyColumn
的 contentPadding
中的第一个和最后一个元素添加必要的内边距。为了显示滚动指示器,请在 ScreenScaffold
和 TransformingLazyColumn
之间共享 columnState
:
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
。此效果有助于用户更精确地浏览列表中的项,同时帮助用户更快地浏览长列表。
如需将此效果添加到 Horologist 版本的 ScalingLazyColumn
,请将 columnState
的 rotaryMode
参数设为 RotaryWithSnap
,如以下代码段所示:
val columnState = rememberResponsiveColumnState( // ... // ... rotaryMode = ScalingLazyColumnState.RotaryMode.Snap ) ScreenScaffold(scrollState = columnState) { ScalingLazyColumn( columnState = columnState ) { // ... // ... } }
为您推荐
- 注意:当 JavaScript 处于关闭状态时,系统会显示链接文字
- Compose for Wear OS Codelab
- 列表和网格
- 在 Compose 中使用 View