mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-11 07:29:14 +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 DOT = "\u00B7"
|
||||||
private const val GRADIENT_SCREENS = 2.0f
|
private const val GRADIENT_SCREENS = 2.0f
|
||||||
private const val FADE_DISTANCE_DP = 64
|
private const val FADE_DISTANCE_DP = 64
|
||||||
|
private const val THEME_TRANSITION_MS = 350
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun AlbumDetailRoute(
|
fun AlbumDetailRoute(
|
||||||
@@ -107,7 +108,7 @@ fun AlbumDetailRoute(
|
|||||||
album = album,
|
album = album,
|
||||||
songs = songs,
|
songs = songs,
|
||||||
coverArt = viewModel::coverArt,
|
coverArt = viewModel::coverArt,
|
||||||
artwork = rememberArtworkColors(viewModel.coverArt(album?.coverArt, true)),
|
artwork = rememberArtworkColors(viewModel.coverArt(album?.coverArt, true), THEME_TRANSITION_MS),
|
||||||
onBack = onBack,
|
onBack = onBack,
|
||||||
onSongClick = viewModel::play,
|
onSongClick = viewModel::play,
|
||||||
playingSongId = playback.item?.id.takeIf { context?.kind == QueueKind.Album && context.refId == albumId },
|
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.Color
|
||||||
import androidx.compose.ui.graphics.lerp
|
import androidx.compose.ui.graphics.lerp
|
||||||
|
|
||||||
private const val THEME_TRANSITION_MS = 600
|
const val ARTWORK_THEME_TRANSITION_MS = 600
|
||||||
|
|
||||||
fun baseArtworkColors(): ArtworkColors =
|
fun baseArtworkColors(): ArtworkColors =
|
||||||
ArtworkColors(
|
ArtworkColors(
|
||||||
@@ -25,7 +25,10 @@ fun baseArtworkColors(): ArtworkColors =
|
|||||||
)
|
)
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun rememberAnimatedArtworkColors(target: ArtworkColors?): ArtworkColors {
|
fun rememberAnimatedArtworkColors(
|
||||||
|
target: ArtworkColors?,
|
||||||
|
durationMillis: Int = ARTWORK_THEME_TRANSITION_MS,
|
||||||
|
): ArtworkColors {
|
||||||
val base = remember { baseArtworkColors() }
|
val base = remember { baseArtworkColors() }
|
||||||
var from by remember { mutableStateOf(target ?: base) }
|
var from by remember { mutableStateOf(target ?: base) }
|
||||||
var to by remember { mutableStateOf(target ?: base) }
|
var to by remember { mutableStateOf(target ?: base) }
|
||||||
@@ -37,7 +40,7 @@ fun rememberAnimatedArtworkColors(target: ArtworkColors?): ArtworkColors {
|
|||||||
from = to
|
from = to
|
||||||
to = next
|
to = next
|
||||||
progress.snapTo(0f)
|
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
|
@Composable
|
||||||
fun rememberArtworkColors(ref: CoverArtRef?): ArtworkColors {
|
fun rememberArtworkColors(
|
||||||
|
ref: CoverArtRef?,
|
||||||
|
durationMillis: Int = ARTWORK_THEME_TRANSITION_MS,
|
||||||
|
): ArtworkColors {
|
||||||
val seeds by rememberArtworkSeed(ref)
|
val seeds by rememberArtworkSeed(ref)
|
||||||
val target = remember(seeds) { seeds?.let { (primary, secondary) -> artworkColorsFromSeeds(primary, secondary) } }
|
val target = remember(seeds) { seeds?.let { (primary, secondary) -> artworkColorsFromSeeds(primary, secondary) } }
|
||||||
return rememberAnimatedArtworkColors(target)
|
return rememberAnimatedArtworkColors(target, durationMillis)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|||||||
Reference in New Issue
Block a user