elye
02/18/2022, 8:33 AMUpdateTransitionAnimateAsStateAnimatableelye
02/18/2022, 8:34 AMDoris Liu
02/18/2022, 9:44 PMTransitionelye
02/19/2022, 4:25 AMTransitionSpringKeyframesSnapval dbAnimateAsState: Dp by animateDpAsState(
        targetValue = switch(enabled),
        animationSpec = if (enabled) keyframesSpec() else snapSpec()
    )dbAnimatable.animateTo(
            targetValue = switch(enabled),
            animationSpec = if (enabled) keyframesSpec() else snapSpec()
        )val dbTransition by transition.animateDp(
        transitionSpec = {
            if (targetState) {
                keyframesSpec()
            } else {
                snapSpec()
            }
        }, label = ""
    ) {
        switch(it)
    }private fun keyframesSpec(): KeyframesSpec<Dp> =
    keyframes {
        durationMillis = 5000
        0.dp at 0
        100.dp at 1000
        50.dp at 2000
        200.dp at 3000
        100.dp at 4000
    }
private fun snapSpec(): SnapSpec<Dp> =
    snap(2000)AnimateAsStateAnimatableTransitionAnimateAsStateAnimatableDoris Liu
02/19/2022, 5:11 AMAnimatableanimate*AsStateTransitionanimateAsStateTransitiontweenkeyfarmeselye
02/19/2022, 5:44 AMclass Transition<S> @PublishedApi internal constructorval spec = if (isInterrupted) {
                // When interrupted, use the default spring, unless the spec is also a spring.
                if (animationSpec is SpringSpec<*>) animationSpec else interruptionSpec
            } else {
                animationSpec
            }interruptionSpec = spring(visibilityThreshold = visibilityThreshold)Doris Liu
02/19/2022, 5:46 AMelye
02/19/2022, 5:47 AMDoris Liu
02/19/2022, 5:50 AMstiffnessMediumLowstiffnessMediumelye
02/19/2022, 7:51 AMtransitionAnimatableAnimateAsStateTransitionelye
02/19/2022, 7:53 AMAnimatableAnimateAsStateDoris Liu
02/22/2022, 6:59 PMelye
02/28/2022, 11:15 AM