From 91522493cc05cf3eb686e1e1014b77ddd7431e72 Mon Sep 17 00:00:00 2001 From: austinried <4966622+austinried@users.noreply.github.com> Date: Wed, 23 Sep 2026 15:29:34 +0000 Subject: [PATCH] start the hero fade higher and keep the bar on the live colour --- .../subtracks/ui/library/AlbumDetailScreen.kt | 8 +------- .../com/subtracks/ui/theme/ArtworkTheme.kt | 20 +++++++++++++++++-- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/com/subtracks/ui/library/AlbumDetailScreen.kt b/app/src/main/kotlin/com/subtracks/ui/library/AlbumDetailScreen.kt index d623413d..3e7e0352 100644 --- a/app/src/main/kotlin/com/subtracks/ui/library/AlbumDetailScreen.kt +++ b/app/src/main/kotlin/com/subtracks/ui/library/AlbumDetailScreen.kt @@ -167,13 +167,7 @@ fun AlbumDetailScreen( label = "gradientAlpha", ) val barColor = - artwork?.let { - lerp( - it.gradientColorAt((scrollPx + barHeightPx / 2f) / gradientHeightPx), - Color.Black, - heroDarken(scrollPx, with(density) { maxHeight.toPx() }), - ) - } ?: Color.Black + artwork?.gradientColorAt((scrollPx + barHeightPx / 2f) / gradientHeightPx) ?: Color.Black HeroGradient( colors = artwork, diff --git a/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkTheme.kt b/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkTheme.kt index 45916bbf..7541a733 100644 --- a/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkTheme.kt +++ b/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkTheme.kt @@ -38,6 +38,8 @@ private const val BLOB_COUNT = 4 private const val ACCENT_MAX_LUMINANCE = 0.34f private const val HERO_DARKEN_MAX = 0.8f private const val HERO_DARKEN_SCREENS = 1.5f +private const val BASE_BOTTOM_DARKEN = 0.35f +private const val POSITION_FADE_START = 0.35f data class ArtworkColors( val scheme: ColorScheme, @@ -249,7 +251,8 @@ fun HeroGradient( Canvas(modifier) { val period = size.height * PERIOD_SCREENS if (period <= 0f) return@Canvas - val phase = scrollPx().mod(period) + val scroll = scrollPx() + val phase = scroll.mod(period) drawRect( brush = Brush.verticalGradient( @@ -281,7 +284,20 @@ fun HeroGradient( } } } - drawRect(color = Color.Black.copy(alpha = heroDarken(scrollPx(), size.height))) + drawRect( + brush = + Brush.verticalGradient( + colorStops = + arrayOf( + 0f to Color.Transparent, + POSITION_FADE_START to Color.Transparent, + 1f to + Color.Black.copy( + alpha = (BASE_BOTTOM_DARKEN + heroDarken(scroll, size.height)).coerceAtMost(HERO_DARKEN_MAX), + ), + ), + ), + ) } }