Прокрутите два горизонтальных паггера в компоновке ⇐ Android
-
Anonymous
Прокрутите два горизонтальных паггера в компоновке
Я хочу иметь два HorizontalPager, где при прокрутке одного начинает прокручиваться другой. Но когда я прокручиваю один из них, у него возникают проблемы с анимацией и он тормозит
анимация прокрутки работает некорректно: val imagePagerState = RememberPagerState(pageCount = { 3 }) val textPagerState = RememberPagerState(pageCount = { 3 }) область видимости = RememberCoroutineScope() val ScrollingFollowingPair, помните { производноеStateOf { если (imagePagerState.isScrollInProgress) { imagePagerState в textPagerState } Еще если (textPagerState.isScrollInProgress) { textPagerState в imagePagerState } еще ноль } } LaunchedEffect (scrollingFollowingPair) { val (scrollingState, FollowState) = прокруткаFollowingPair ?: return@LaunchedEffect snapshotFlow { прокруткаState.currentPage + прокруткаState.currentPageOffsetFraction } .collect {часть страницы -> val diveeAndRemainder = BigDecimal.valueOf(pagePart.toDouble()) .divideAndRemainder(BigDecimal.ONE) val страница = разделитьAndRemainder[0].toInt() val дробь = divAndRemainder[1].toFloat().coerceIn(-0.5f, 0.5f) nextState.animateScrollToPage(страница, дробь) } }
Я хочу иметь два HorizontalPager, где при прокрутке одного начинает прокручиваться другой. Но когда я прокручиваю один из них, у него возникают проблемы с анимацией и он тормозит
анимация прокрутки работает некорректно: val imagePagerState = RememberPagerState(pageCount = { 3 }) val textPagerState = RememberPagerState(pageCount = { 3 }) область видимости = RememberCoroutineScope() val ScrollingFollowingPair, помните { производноеStateOf { если (imagePagerState.isScrollInProgress) { imagePagerState в textPagerState } Еще если (textPagerState.isScrollInProgress) { textPagerState в imagePagerState } еще ноль } } LaunchedEffect (scrollingFollowingPair) { val (scrollingState, FollowState) = прокруткаFollowingPair ?: return@LaunchedEffect snapshotFlow { прокруткаState.currentPage + прокруткаState.currentPageOffsetFraction } .collect {часть страницы -> val diveeAndRemainder = BigDecimal.valueOf(pagePart.toDouble()) .divideAndRemainder(BigDecimal.ONE) val страница = разделитьAndRemainder[0].toInt() val дробь = divAndRemainder[1].toFloat().coerceIn(-0.5f, 0.5f) nextState.animateScrollToPage(страница, дробь) } }
Мобильная версия