Sample updates to scrollbars
This commit is contained in:
parent
7a1b599462
commit
bc0b9e536a
2 changed files with 26 additions and 18 deletions
|
@ -48,6 +48,7 @@ import androidx.compose.ui.util.fastMaxBy
|
||||||
import kotlinx.coroutines.channels.BufferOverflow
|
import kotlinx.coroutines.channels.BufferOverflow
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
|
import kotlinx.coroutines.flow.sample
|
||||||
import tachiyomi.presentation.core.components.Scroller.STICKY_HEADER_KEY_PREFIX
|
import tachiyomi.presentation.core.components.Scroller.STICKY_HEADER_KEY_PREFIX
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
|
@ -124,14 +125,16 @@ fun VerticalFastScroller(
|
||||||
val alpha = remember { Animatable(0f) }
|
val alpha = remember { Animatable(0f) }
|
||||||
val isThumbVisible = alpha.value > 0f
|
val isThumbVisible = alpha.value > 0f
|
||||||
LaunchedEffect(scrolled, alpha) {
|
LaunchedEffect(scrolled, alpha) {
|
||||||
scrolled.collectLatest {
|
scrolled
|
||||||
if (thumbAllowed()) {
|
.sample(100)
|
||||||
alpha.snapTo(1f)
|
.collectLatest {
|
||||||
alpha.animateTo(0f, animationSpec = FadeOutAnimationSpec)
|
if (thumbAllowed()) {
|
||||||
} else {
|
alpha.snapTo(1f)
|
||||||
alpha.animateTo(0f, animationSpec = ImmediateFadeOutAnimationSpec)
|
alpha.animateTo(0f, animationSpec = FadeOutAnimationSpec)
|
||||||
|
} else {
|
||||||
|
alpha.animateTo(0f, animationSpec = ImmediateFadeOutAnimationSpec)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Box(
|
Box(
|
||||||
|
@ -304,14 +307,16 @@ fun VerticalGridFastScroller(
|
||||||
val alpha = remember { Animatable(0f) }
|
val alpha = remember { Animatable(0f) }
|
||||||
val isThumbVisible = alpha.value > 0f
|
val isThumbVisible = alpha.value > 0f
|
||||||
LaunchedEffect(scrolled, alpha) {
|
LaunchedEffect(scrolled, alpha) {
|
||||||
scrolled.collectLatest {
|
scrolled
|
||||||
if (thumbAllowed()) {
|
.sample(100)
|
||||||
alpha.snapTo(1f)
|
.collectLatest {
|
||||||
alpha.animateTo(0f, animationSpec = FadeOutAnimationSpec)
|
if (thumbAllowed()) {
|
||||||
} else {
|
alpha.snapTo(1f)
|
||||||
alpha.animateTo(0f, animationSpec = ImmediateFadeOutAnimationSpec)
|
alpha.animateTo(0f, animationSpec = FadeOutAnimationSpec)
|
||||||
|
} else {
|
||||||
|
alpha.animateTo(0f, animationSpec = ImmediateFadeOutAnimationSpec)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Box(
|
Box(
|
||||||
|
|
|
@ -67,6 +67,7 @@ import androidx.compose.ui.util.fastSumBy
|
||||||
import kotlinx.coroutines.channels.BufferOverflow
|
import kotlinx.coroutines.channels.BufferOverflow
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
|
import kotlinx.coroutines.flow.sample
|
||||||
import tachiyomi.presentation.core.components.Scroller.STICKY_HEADER_KEY_PREFIX
|
import tachiyomi.presentation.core.components.Scroller.STICKY_HEADER_KEY_PREFIX
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -206,10 +207,12 @@ private fun Modifier.drawScrollbar(
|
||||||
|
|
||||||
val alpha = remember { Animatable(0f) }
|
val alpha = remember { Animatable(0f) }
|
||||||
LaunchedEffect(scrolled, alpha) {
|
LaunchedEffect(scrolled, alpha) {
|
||||||
scrolled.collectLatest {
|
scrolled
|
||||||
alpha.snapTo(1f)
|
.sample(100)
|
||||||
alpha.animateTo(0f, animationSpec = FadeOutAnimationSpec)
|
.collectLatest {
|
||||||
}
|
alpha.snapTo(1f)
|
||||||
|
alpha.animateTo(0f, animationSpec = FadeOutAnimationSpec)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val isLtr = LocalLayoutDirection.current == LayoutDirection.Ltr
|
val isLtr = LocalLayoutDirection.current == LayoutDirection.Ltr
|
||||||
|
|
Reference in a new issue