AnchoredDraggableState переходит в значение true, даже если палец не освобожден от управления свайпомAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 AnchoredDraggableState переходит в значение true, даже если палец не освобожден от управления свайпом

Сообщение Anonymous »

Я пытаюсь реализовать управление смахиванием в своей сборке приложения на основе Jet Pack Compose. до сих пор я использовал следующий код. я использую Compose Bom
androidx.compose:compose-bom:2024.09.00

В настоящее время при проведении пальцем вправо, как только достигаются пороговые значения, т. е. выполняется половина пролистывания, элемент управления смахиванием перемещается в крайнее правое положение, когда состояние становится истинным. Я хочу, чтобы состояние смахивания не было истинным до тех пор, пока пользователь не отпустит пальцы, даже когда пороговые значения пересекаются, т.е. 0,5f .
'androidx.compose:compose-bom:2024.09.00'

val maxWidthPx = constraints.maxWidth.toFloat()
val endPx = maxWidthPx - handleSizePx
val swipeState = remember {
AnchoredDraggableState(
initialValue = false
)
}

LaunchedEffect(endPx, swipeState.currentValue) {
swipeState.updateAnchors(
DraggableAnchors {
if (!swipeState.currentValue) {
false at 0f
}
true at endPx
}
)
}

// Trigger action when the state becomes 'true' (Arrived)
LaunchedEffect(swipeState.currentValue) {
if (swipeState.currentValue) {
onArrived()
Toast.makeText(context, "Arrived", Toast.LENGTH_SHORT).show()
}
}

val flingBehavior = AnchoredDraggableDefaults.flingBehavior(
state = swipeState,
positionalThreshold = { distance -> distance * 0.5f },
animationSpec = spring(
dampingRatio = Spring.DampingRatioLowBouncy,
stiffness = Spring.StiffnessLow
)
)

Box(
modifier = Modifier
.offset {
// Safety check to ensure offset is read only after layout/initialization
val offset = try {
swipeState.requireOffset()
} catch (e: Exception) {
0f
}
IntOffset(offset.roundToInt(), 0)
}
.size(handleSize)
.padding(4.dp)
.clip(CircleShape)
.background(MaterialTheme.colorScheme.primary)
.anchoredDraggable(
state = swipeState,
orientation = Orientation.Horizontal,
flingBehavior = flingBehavior,
),
contentAlignment = Alignment.Center
) {
// My controls
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... -swiper-co
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»