mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-10 15:11:58 +01:00
make the artwork theme transition duration caller-supplied
This commit is contained in:
@@ -91,6 +91,7 @@ import kotlin.math.roundToInt
|
||||
private const val DOT = "\u00B7"
|
||||
private const val GRADIENT_SCREENS = 2.0f
|
||||
private const val FADE_DISTANCE_DP = 64
|
||||
private const val THEME_TRANSITION_MS = 350
|
||||
|
||||
@Composable
|
||||
fun AlbumDetailRoute(
|
||||
@@ -107,7 +108,7 @@ fun AlbumDetailRoute(
|
||||
album = album,
|
||||
songs = songs,
|
||||
coverArt = viewModel::coverArt,
|
||||
artwork = rememberArtworkColors(viewModel.coverArt(album?.coverArt, true)),
|
||||
artwork = rememberArtworkColors(viewModel.coverArt(album?.coverArt, true), THEME_TRANSITION_MS),
|
||||
onBack = onBack,
|
||||
onSongClick = viewModel::play,
|
||||
playingSongId = playback.item?.id.takeIf { context?.kind == QueueKind.Album && context.refId == albumId },
|
||||
|
||||
@@ -12,7 +12,7 @@ import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.lerp
|
||||
|
||||
private const val THEME_TRANSITION_MS = 600
|
||||
const val ARTWORK_THEME_TRANSITION_MS = 600
|
||||
|
||||
fun baseArtworkColors(): ArtworkColors =
|
||||
ArtworkColors(
|
||||
@@ -25,7 +25,10 @@ fun baseArtworkColors(): ArtworkColors =
|
||||
)
|
||||
|
||||
@Composable
|
||||
fun rememberAnimatedArtworkColors(target: ArtworkColors?): ArtworkColors {
|
||||
fun rememberAnimatedArtworkColors(
|
||||
target: ArtworkColors?,
|
||||
durationMillis: Int = ARTWORK_THEME_TRANSITION_MS,
|
||||
): ArtworkColors {
|
||||
val base = remember { baseArtworkColors() }
|
||||
var from by remember { mutableStateOf(target ?: base) }
|
||||
var to by remember { mutableStateOf(target ?: base) }
|
||||
@@ -37,7 +40,7 @@ fun rememberAnimatedArtworkColors(target: ArtworkColors?): ArtworkColors {
|
||||
from = to
|
||||
to = next
|
||||
progress.snapTo(0f)
|
||||
progress.animateTo(1f, tween(durationMillis = THEME_TRANSITION_MS))
|
||||
progress.animateTo(1f, tween(durationMillis = durationMillis))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -158,10 +158,13 @@ private fun blendHue(
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun rememberArtworkColors(ref: CoverArtRef?): ArtworkColors {
|
||||
fun rememberArtworkColors(
|
||||
ref: CoverArtRef?,
|
||||
durationMillis: Int = ARTWORK_THEME_TRANSITION_MS,
|
||||
): ArtworkColors {
|
||||
val seeds by rememberArtworkSeed(ref)
|
||||
val target = remember(seeds) { seeds?.let { (primary, secondary) -> artworkColorsFromSeeds(primary, secondary) } }
|
||||
return rememberAnimatedArtworkColors(target)
|
||||
return rememberAnimatedArtworkColors(target, durationMillis)
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
||||
Reference in New Issue
Block a user