MangaScreen: Hide scroller when appbar is expanded (#7426)
This commit is contained in:
parent
1f10b79ee8
commit
3072296919
@ -47,6 +47,7 @@ import kotlin.math.roundToInt
|
|||||||
fun VerticalFastScroller(
|
fun VerticalFastScroller(
|
||||||
listState: LazyListState,
|
listState: LazyListState,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
thumbAllowed: () -> Boolean = { true },
|
||||||
thumbColor: Color = MaterialTheme.colorScheme.primary,
|
thumbColor: Color = MaterialTheme.colorScheme.primary,
|
||||||
topContentPadding: Dp = Dp.Hairline,
|
topContentPadding: Dp = Dp.Hairline,
|
||||||
endContentPadding: Dp = Dp.Hairline,
|
endContentPadding: Dp = Dp.Hairline,
|
||||||
@ -106,8 +107,12 @@ fun VerticalFastScroller(
|
|||||||
val isThumbVisible = alpha.value > 0f
|
val isThumbVisible = alpha.value > 0f
|
||||||
LaunchedEffect(scrolled, alpha) {
|
LaunchedEffect(scrolled, alpha) {
|
||||||
scrolled.collectLatest {
|
scrolled.collectLatest {
|
||||||
alpha.snapTo(1f)
|
if (thumbAllowed()) {
|
||||||
alpha.animateTo(0f, animationSpec = FadeOutAnimationSpec)
|
alpha.snapTo(1f)
|
||||||
|
alpha.animateTo(0f, animationSpec = FadeOutAnimationSpec)
|
||||||
|
} else {
|
||||||
|
alpha.animateTo(0f, animationSpec = ImmediateFadeOutAnimationSpec)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,6 +192,9 @@ private val FadeOutAnimationSpec = tween<Float>(
|
|||||||
durationMillis = ViewConfiguration.getScrollBarFadeDuration(),
|
durationMillis = ViewConfiguration.getScrollBarFadeDuration(),
|
||||||
delayMillis = 2000,
|
delayMillis = 2000,
|
||||||
)
|
)
|
||||||
|
private val ImmediateFadeOutAnimationSpec = tween<Float>(
|
||||||
|
durationMillis = ViewConfiguration.getScrollBarFadeDuration(),
|
||||||
|
)
|
||||||
|
|
||||||
private val LazyListItemInfo.top: Int
|
private val LazyListItemInfo.top: Int
|
||||||
get() = offset
|
get() = offset
|
||||||
|
@ -353,6 +353,7 @@ private fun MangaScreenSmallImpl(
|
|||||||
WindowInsets.navigationBars.only(WindowInsetsSides.Bottom).asPaddingValues()
|
WindowInsets.navigationBars.only(WindowInsetsSides.Bottom).asPaddingValues()
|
||||||
VerticalFastScroller(
|
VerticalFastScroller(
|
||||||
listState = chapterListState,
|
listState = chapterListState,
|
||||||
|
thumbAllowed = { scrollBehavior.state.offset == scrollBehavior.state.offsetLimit },
|
||||||
topContentPadding = withNavBarContentPadding.calculateTopPadding(),
|
topContentPadding = withNavBarContentPadding.calculateTopPadding(),
|
||||||
endContentPadding = withNavBarContentPadding.calculateEndPadding(LocalLayoutDirection.current),
|
endContentPadding = withNavBarContentPadding.calculateEndPadding(LocalLayoutDirection.current),
|
||||||
) {
|
) {
|
||||||
|
Loading…
Reference in New Issue
Block a user