滑动关闭动画用于表现在用户转到上一页时的过渡。
滑动关闭的动画详情与 RSB 按下类似。手指最多可控制 50% 的动画进度。
应用视图上还有一个与关闭手势关联的动画。应用视图上显示的移动量与手指需要移动的距离并不完全相同。应用视图绝不应离开屏幕边缘,显示带有一些阻力的类似挤压的效果。
实现
Wear 有自己的 Box
版本,即 SwipeToDismissBox
。这增加了对滑动关闭手势(与移动设备上的返回按钮类似)的支持。
SwipeToDismissBox
是一个可以通过向右滑动来关闭的可组合项。
如需使用 SwipeToDismissBox
,您必须先创建一个状态。该状态包含滑动方向、动画是否正在运行、当前值和目标等信息。以下示例展示了如何设计一个简单的滑动关闭操作:
val state = rememberSwipeToDismissBoxState()
SwipeToDismissBox(
onDismissed = { /* navigateBack */ },
) { isBackground ->
if (isBackground) {
Box(modifier = Modifier.fillMaxSize().background(MaterialTheme.colors.secondaryVariant))
} else {
Column(
modifier = Modifier.fillMaxSize().background(MaterialTheme.colors.primary),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
Text("Swipe to dismiss", color = MaterialTheme.colors.onPrimary)
}
}
}
如需详细了解如何将 SwipeToDismissBox 与 Navigation 库结合使用,请参阅 Wear Compose Navigation 库的参考文档。
设计
在设计滑动关闭操作时,请牢记以下两条原则:
屏幕边缘
应考虑到可滑动的其他界面元素,例如分页的应用视图。如果可以滑动关闭,请预留 20% 的屏幕边缘,用于触发该动作。
请参阅适用于 Wear OS 的 Compose Material 代码库中的示例 ,了解有关内容可水平滚动时的边缘滑动的示例。
决定是返回还是留在应用视图的阈值
如果用户手指拖动超过屏幕宽度的 50%,应用应触发剩余的滑动返回动画。如果不到此阈值,应用应迅速恢复完整的应用视图。
如果手势速度很快,请忽略 50% 阈值规则并滑动返回。