- Пользовательский порог: действие смахивания должно запускаться, когда пользователь перетаскивает более 25 % ширины.
- Время действия: функция (onRemove и onArchive) не должна выполняться немедленно при достижении порога пересек. Вместо этого ему следует подождать, пока пользователь не поднимет палец, анимация «отклонения» завершится и фон полностью не откроется.
Кроме того, я не уверен, как правильно обрабатывать поток анимации к действию. При попытке вызвать swipeToDismissBoxState.dismiss() анимация выполняется, но функция (onRemove или onArchive) не выполняется.
Код: Выделить всё
val thresholdPercent = 0.25f
val swipeToDismissBoxState = rememberSwipeToDismissBoxState(
positionalThreshold = { it * thresholdPercent },
)
LaunchedEffect(swipeToDismissBoxState.currentValue) {
println("SwipeToDismissBoxValue progress: ${swipeToDismissBoxState.progress}")
when (swipeToDismissBoxState.currentValue) {
SwipeToDismissBoxValue.EndToStart -> {
swipeToDismissBoxState.dismiss(SwipeToDismissBoxValue.EndToStart)
onRemove()
swipeToDismissBoxState.snapTo(SwipeToDismissBoxValue.Settled)
}
SwipeToDismissBoxValue.StartToEnd -> {
swipeToDismissBoxState.dismiss(SwipeToDismissBoxValue.StartToEnd)
onArchive()
swipeToDismissBoxState.snapTo(SwipeToDismissBoxValue.Settled)
}
SwipeToDismissBoxValue.Settled -> {}
}
}
SwipeToDismissBox(
state = swipeToDismissBoxState,
backgroundContent = {...}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ser-lift-f
Мобильная версия