Estoy usando el visor experimental para Jetpack compose que se basa en LazyColumn / Row .
Lo que estoy tratando de hacer es establecer un umbral de cuánto necesito mover mi dedo antes de que comience a desplazarse a la página siguiente. El comportamiento predeterminado es que tan pronto como muevo el dedo, comienza a desplazarse, pero quiero tener un umbral mayor de cuánto necesito mover el dedo antes de que se produzca el desplazamiento visual. Miré el parámetro FlingBehaviour , pero no veo cómo usarlo para lograr lo que quiero. (O al menos agregue un poco más de "resistencia" para pasar de una página a otra, para que no sea tan sensible)
¿Tienes algunas ideas?
Este umbral está controlado por el argumento flingBehavior .
PagerDefaults.flingBehavior(pagerState) proporciona trabajo de paginación, actualmente solo las animaciones son configurables, por lo que no puede proporcionar su propio comportamiento en su lugar. Pero puedes envolverlo así:
private class FlingBehaviourMultiplier( private val multiplier: Float, private val baseFlingBehavior: FlingBehavior ) : FlingBehavior { override suspend fun ScrollScope.performFling(initialVelocity: Float): Float { return with(baseFlingBehavior) { performFling(initialVelocity * multiplier) } } } @Composable fun rememberFlingBehaviorMultiplier( multiplier: Float, baseFlingBehavior: FlingBehavior ): FlingBehavior = remember(multiplier, baseFlingBehavior) { FlingBehaviourMultiplier(multiplier, baseFlingBehavior) }Uso:
val pagerState = rememberPagerState() HorizontalPager( count = 10, state = pagerState, flingBehavior = rememberFlingBehaviorMultiplier( multiplier = 0.5f, baseFlingBehavior = PagerDefaults.flingBehavior(pagerState) ), modifier = Modifier ) { page -> }