Improve pager layout scrolling
This commit is contained in:
parent
dfc52a3c38
commit
e81ec26fe8
@ -2,7 +2,9 @@ package de.mm20.launcher2.ui.launcher
|
|||||||
|
|
||||||
import androidx.activity.compose.BackHandler
|
import androidx.activity.compose.BackHandler
|
||||||
import androidx.compose.animation.AnimatedVisibility
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
|
import androidx.compose.animation.core.Spring
|
||||||
import androidx.compose.animation.core.animateDpAsState
|
import androidx.compose.animation.core.animateDpAsState
|
||||||
|
import androidx.compose.animation.core.spring
|
||||||
import androidx.compose.animation.slideIn
|
import androidx.compose.animation.slideIn
|
||||||
import androidx.compose.animation.slideOut
|
import androidx.compose.animation.slideOut
|
||||||
import androidx.compose.foundation.LocalOverscrollConfiguration
|
import androidx.compose.foundation.LocalOverscrollConfiguration
|
||||||
@ -27,6 +29,7 @@ import androidx.compose.foundation.layout.systemBarsPadding
|
|||||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.foundation.pager.HorizontalPager
|
import androidx.compose.foundation.pager.HorizontalPager
|
||||||
|
import androidx.compose.foundation.pager.PagerDefaults
|
||||||
import androidx.compose.foundation.pager.rememberPagerState
|
import androidx.compose.foundation.pager.rememberPagerState
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
@ -309,9 +312,13 @@ fun PagerScaffold(
|
|||||||
reverseLayout = reverse,
|
reverseLayout = reverse,
|
||||||
state = pagerState,
|
state = pagerState,
|
||||||
userScrollEnabled = !isWidgetEditMode,
|
userScrollEnabled = !isWidgetEditMode,
|
||||||
|
flingBehavior = PagerDefaults.flingBehavior(
|
||||||
|
state = pagerState,
|
||||||
|
lowVelocityAnimationSpec = spring(
|
||||||
|
stiffness = Spring.StiffnessMediumLow,
|
||||||
|
),
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
val pagerProgress =
|
|
||||||
pagerState.currentPage + pagerState.currentPageOffsetFraction
|
|
||||||
when (it) {
|
when (it) {
|
||||||
0 -> {
|
0 -> {
|
||||||
val editModePadding by animateDpAsState(if (isWidgetEditMode && bottomSearchBar) 56.dp else 0.dp)
|
val editModePadding by animateDpAsState(if (isWidgetEditMode && bottomSearchBar) 56.dp else 0.dp)
|
||||||
@ -349,6 +356,8 @@ fun PagerScaffold(
|
|||||||
.verticalScroll(widgetsScrollState)
|
.verticalScroll(widgetsScrollState)
|
||||||
.windowInsetsPadding(WindowInsets.safeDrawing)
|
.windowInsetsPadding(WindowInsets.safeDrawing)
|
||||||
.graphicsLayer {
|
.graphicsLayer {
|
||||||
|
val pagerProgress =
|
||||||
|
pagerState.currentPage + pagerState.currentPageOffsetFraction
|
||||||
alpha = 1f - pagerProgress
|
alpha = 1f - pagerProgress
|
||||||
}
|
}
|
||||||
.padding(8.dp)
|
.padding(8.dp)
|
||||||
@ -404,6 +413,8 @@ fun PagerScaffold(
|
|||||||
.requiredWidth(width)
|
.requiredWidth(width)
|
||||||
.fillMaxHeight()
|
.fillMaxHeight()
|
||||||
.graphicsLayer {
|
.graphicsLayer {
|
||||||
|
val pagerProgress =
|
||||||
|
pagerState.currentPage + pagerState.currentPageOffsetFraction
|
||||||
alpha = pagerProgress
|
alpha = pagerProgress
|
||||||
}
|
}
|
||||||
.nestedScroll(searchNestedScrollConnection)
|
.nestedScroll(searchNestedScrollConnection)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user