Skip to content

Instantly share code, notes, and snippets.

@mazzouzi
mazzouzi / MainActivity.kt
Last active September 26, 2022 19:55
Adjust linear interpolation
val titleXFirstInterpolatedPoint = lerp(
titlePaddingStart,
(titlePaddingEnd - titleExtraStartPadding) * 5 / 4,
collapseFraction
)
val titleXSecondInterpolatedPoint = lerp(
(titlePaddingEnd - titleExtraStartPadding) * 5 / 4,
titlePaddingEnd - titleExtraStartPadding,
collapseFraction
@mazzouzi
mazzouzi / MainActivity.kt
Last active September 26, 2022 19:55
Extra padding cancellation
val titleExtraStartPadding = titleWidthPx.toDp() * (1 - scaleXY.value) / 2
@mazzouzi
mazzouzi / MainActivity.kt
Last active September 24, 2022 11:49
Bernstein polynomial form
.
.
Text(
text = "New York",
fontSize = 30.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier
.graphicsLayer {
val collapseRange: Float = (headerHeightPx - toolbarHeightPx)
val collapseFraction: Float = (scroll.value / collapseRange).coerceIn(0f, 1f)
@mazzouzi
mazzouzi / MainActivity.kt
Last active September 24, 2022 11:49
Title scale animation
private const val titleFontScaleStart = 1f
private const val titleFontScaleEnd = 0.66f
@Composable
private fun Title(scroll: ScrollState, headerHeightPx: Float, toolbarHeightPx: Float) {
val collapseRange: Float = (headerHeightPx - toolbarHeightPx)
val collapseFraction: Float = (scroll.value / collapseRange).coerceIn(0f, 1f)
val scaleXY = lerp(
titleFontScaleStart.dp,
titleFontScaleEnd.dp,
@mazzouzi
mazzouzi / MainActivity.kt
Last active September 24, 2022 11:49
Quadratic Bézier Curve translation
.
.
Text(
text = "New York",
fontSize = 30.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier
.graphicsLayer {
translationY = titleY.toPx()
translationX = titleX.toPx()
@mazzouzi
mazzouzi / MainActivity.kt
Last active September 24, 2022 11:49
lerp X axis
val titleX = lerp(
titleXFirstInterpolatedPoint,
titleXSecondInterpolatedPoint,
collapseFraction
)
@mazzouzi
mazzouzi / MainActivity.kt
Last active September 24, 2022 11:48
lerp P1P2 - X axis
val titleXSecondInterpolatedPoint = lerp(
titlePaddingEnd * 5 / 4,
titlePaddingEnd,
collapseFraction
)
@mazzouzi
mazzouzi / MainActivity.kt
Last active September 24, 2022 11:48
lerp P0P1 - X axis
val titleXFirstInterpolatedPoint = lerp(
titlePaddingStart,
titlePaddingEnd * 5 / 4,
collapseFraction
)
@mazzouzi
mazzouzi / MainActivity.kt
Last active September 24, 2022 11:49
lerp Y axis
val titleY = lerp(
titleYFirstInterpolatedPoint,
titleYSecondInterpolatedPoint,
collapseFraction
)
@mazzouzi
mazzouzi / MainActivity.kt
Last active September 24, 2022 11:47
lerp P1P2 - Y axis
val titleYSecondInterpolatedPoint = lerp(
headerHeight / 2,
toolbarHeight / 2 - titleHeightDp / 2,
collapseFraction
)