round the mini player progress tip and surface the library header

This commit is contained in:
austinried
2026-10-04 00:29:54 +00:00
parent 483a15923f
commit 702bbe133a
2 changed files with 29 additions and 9 deletions
@@ -179,6 +179,7 @@ fun LibraryScreen(
modifier = modifier =
Modifier Modifier
.fillMaxWidth() .fillMaxWidth()
.background(MaterialTheme.colorScheme.surfaceContainerHigh)
.padding(top = statusBarTop), .padding(top = statusBarTop),
) { ) {
Box( Box(
@@ -1,5 +1,6 @@
package com.subtracks.ui.playback package com.subtracks.ui.playback
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.basicMarquee import androidx.compose.foundation.basicMarquee
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.Orientation
@@ -22,7 +23,6 @@ import androidx.compose.material.icons.rounded.SkipNext
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.LinearProgressIndicator
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -34,7 +34,8 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.lerp import androidx.compose.ui.graphics.lerp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.subtracks.data.model.CoverArtRef import com.subtracks.data.model.CoverArtRef
@@ -87,14 +88,9 @@ fun MiniPlayer(
), ),
) { ) {
Column { Column {
LinearProgressIndicator( MiniPlayerProgressBar(
progress = { progress }, progress = progress,
modifier = Modifier.fillMaxWidth().height(4.dp), modifier = Modifier.fillMaxWidth().height(4.dp),
color = MaterialTheme.colorScheme.primary,
trackColor = MaterialTheme.colorScheme.primary.copy(alpha = 0.24f),
strokeCap = StrokeCap.Butt,
gapSize = 0.dp,
drawStopIndicator = {},
) )
Row( Row(
modifier = modifier =
@@ -157,3 +153,26 @@ fun MiniPlayer(
} }
} }
} }
@Composable
private fun MiniPlayerProgressBar(
progress: Float,
modifier: Modifier = Modifier,
) {
val color = MaterialTheme.colorScheme.primary
val track = color.copy(alpha = 0.24f)
Canvas(modifier) {
val radius = size.height / 2f
drawRect(color = track)
val tip = size.width * progress.coerceIn(0f, 1f)
if (tip <= 0f) return@Canvas
drawRoundRect(
color = color,
size = Size(tip, size.height),
cornerRadius = CornerRadius(radius, radius),
)
if (tip > radius) {
drawRect(color = color, size = Size(tip - radius, size.height))
}
}
}