From 2c4e3b772bf8bd9dcedc78dea0cc7c380b25e3c4 Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Fri, 10 Jun 2022 21:13:48 +0200 Subject: [PATCH] Fix SeekBar behavior --- .../kotlin/it/vfsfitvnm/vimusic/ui/components/SeekBar.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/SeekBar.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/SeekBar.kt index 063605a..a574595 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/SeekBar.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/SeekBar.kt @@ -26,7 +26,7 @@ fun SeekBar( onDragEnd: () -> Unit, color: Color, backgroundColor: Color, - modifier: Modifier, + modifier: Modifier = Modifier, barHeight: Dp = 3.5.dp, scrubberColor: Color = color, scrubberRadius: Dp = 6.dp, @@ -47,9 +47,10 @@ fun SeekBar( } .pointerInput(minimumValue, maximumValue) { if (maximumValue < minimumValue) return@pointerInput + detectTapGestures( onPress = { offset -> - onDragStart((offset.x / size.width * (maximumValue - minimumValue)).roundToLong()) + onDragStart((offset.x / size.width * (maximumValue - minimumValue) + minimumValue).roundToLong()) }, onTap = { onDragEnd() @@ -63,7 +64,7 @@ fun SeekBar( val scrubberPosition = if (maximumValue < minimumValue) { 0f } else { - (value.toFloat() + minimumValue) / (maximumValue - minimumValue) * size.width + (value.toFloat() - minimumValue) / (maximumValue - minimumValue) * size.width } drawCircle( @@ -84,7 +85,7 @@ fun SeekBar( Spacer( modifier = Modifier .height(barHeight) - .fillMaxWidth((value.toFloat() + minimumValue) / (maximumValue - minimumValue)) + .fillMaxWidth((value.toFloat() - minimumValue) / (maximumValue - minimumValue)) .background(color = color, shape = shape) ) }