瀏覽代碼

MangaScreen: Hide scroller when appbar is expanded (#7426)

Ivan Iskandar 2 年之前
父節點
當前提交
3072296919

+ 10 - 2
app/src/main/java/eu/kanade/presentation/components/VerticalFastScroller.kt

@@ -47,6 +47,7 @@ import kotlin.math.roundToInt
 fun VerticalFastScroller(
     listState: LazyListState,
     modifier: Modifier = Modifier,
+    thumbAllowed: () -> Boolean = { true },
     thumbColor: Color = MaterialTheme.colorScheme.primary,
     topContentPadding: Dp = Dp.Hairline,
     endContentPadding: Dp = Dp.Hairline,
@@ -106,8 +107,12 @@ fun VerticalFastScroller(
             val isThumbVisible = alpha.value > 0f
             LaunchedEffect(scrolled, alpha) {
                 scrolled.collectLatest {
-                    alpha.snapTo(1f)
-                    alpha.animateTo(0f, animationSpec = FadeOutAnimationSpec)
+                    if (thumbAllowed()) {
+                        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(),
     delayMillis = 2000,
 )
+private val ImmediateFadeOutAnimationSpec = tween<Float>(
+    durationMillis = ViewConfiguration.getScrollBarFadeDuration(),
+)
 
 private val LazyListItemInfo.top: Int
     get() = offset

+ 1 - 0
app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt

@@ -353,6 +353,7 @@ private fun MangaScreenSmallImpl(
                 WindowInsets.navigationBars.only(WindowInsetsSides.Bottom).asPaddingValues()
             VerticalFastScroller(
                 listState = chapterListState,
+                thumbAllowed = { scrollBehavior.state.offset == scrollBehavior.state.offsetLimit },
                 topContentPadding = withNavBarContentPadding.calculateTopPadding(),
                 endContentPadding = withNavBarContentPadding.calculateEndPadding(LocalLayoutDirection.current),
             ) {