mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-11 15:29:15 +01:00
start the hero fade higher and keep the bar on the live colour
This commit is contained in:
@@ -167,13 +167,7 @@ fun AlbumDetailScreen(
|
|||||||
label = "gradientAlpha",
|
label = "gradientAlpha",
|
||||||
)
|
)
|
||||||
val barColor =
|
val barColor =
|
||||||
artwork?.let {
|
artwork?.gradientColorAt((scrollPx + barHeightPx / 2f) / gradientHeightPx) ?: Color.Black
|
||||||
lerp(
|
|
||||||
it.gradientColorAt((scrollPx + barHeightPx / 2f) / gradientHeightPx),
|
|
||||||
Color.Black,
|
|
||||||
heroDarken(scrollPx, with(density) { maxHeight.toPx() }),
|
|
||||||
)
|
|
||||||
} ?: Color.Black
|
|
||||||
|
|
||||||
HeroGradient(
|
HeroGradient(
|
||||||
colors = artwork,
|
colors = artwork,
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ private const val BLOB_COUNT = 4
|
|||||||
private const val ACCENT_MAX_LUMINANCE = 0.34f
|
private const val ACCENT_MAX_LUMINANCE = 0.34f
|
||||||
private const val HERO_DARKEN_MAX = 0.8f
|
private const val HERO_DARKEN_MAX = 0.8f
|
||||||
private const val HERO_DARKEN_SCREENS = 1.5f
|
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(
|
data class ArtworkColors(
|
||||||
val scheme: ColorScheme,
|
val scheme: ColorScheme,
|
||||||
@@ -249,7 +251,8 @@ fun HeroGradient(
|
|||||||
Canvas(modifier) {
|
Canvas(modifier) {
|
||||||
val period = size.height * PERIOD_SCREENS
|
val period = size.height * PERIOD_SCREENS
|
||||||
if (period <= 0f) return@Canvas
|
if (period <= 0f) return@Canvas
|
||||||
val phase = scrollPx().mod(period)
|
val scroll = scrollPx()
|
||||||
|
val phase = scroll.mod(period)
|
||||||
drawRect(
|
drawRect(
|
||||||
brush =
|
brush =
|
||||||
Brush.verticalGradient(
|
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),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user