我有一个绿色正方形,可以在垂直方向上拖动。但是每当我停止拖动时,我希望它能够通过动画将偏移重置到起始位置。我尝试了下面的方法,但是我无法解决它。有人知道如何做吗?
@Composable
fun DraggableSquare() {
var currentOffset by remember { mutableStateOf(0F) }
val resetAnimation by animateIntOffsetAsState(targetValue = IntOffset(0, currentOffset.roundToInt()))
var shouldReset = false
Box(contentAlignment = Alignment.TopCenter, modifier = Modifier.fillMaxSize()) {
Surface(
color = Color(0xFF34AB52),
modifier = Modifier
.size(100.dp)
.offset {
when {
shouldReset -> resetAnimation
else -> IntOffset(0, currentOffset.roundToInt())
}
}
.draggable(
state = rememberDraggableState { delta -> currentOffset += delta },
orientation = Orientation.Vertical,
onDragStopped = {
shouldReset = true
currentOffset = 0F
}
)
) {}
}
}
snapTo
函数内部,应该写成 offsetY 而不是 offsetX。但由于字符数不足,我无法请求编辑。 - Donny RozendalsnapTo
和animateTo
都是挂起函数,需要使用作用域来调用它们。 - undefined