# Transistion WORK IN PROGRESS # Working with Transistion ## What will we build? This is might not be a spectacutlar use case for Transistion, but it should give an idea, how to use Transistion. This is example consist of a **Text** which will print the active value of the Transition state and a padding which will change depending on this state. The value of the Transistion state will change from 0 to 200 over and over again. ## Create a transistion definition Transistion requires a TransitionDefinition, so let's build that first. ```kotlin private val paddingTransitionDefinition = transitionDefinition { ... } ``` Inside the TransitionDefinition, we have to define all possible transition states and which transition should be used between two transition states. In this example we want to create transition between 0 and 200, so let's create two states for that. ```kotlin private val paddingPropKey = FloatPropKey() private val paddingTransitionDefinition = transitionDefinition { state("A"){ this[paddingPropKey] = 0f } state("B") { this[paddingPropKey] = 200f } ... } ``` Inside **transitionDefinition** you have to use the **state()** to define a transition state. It requires a name and a function to initialize a state. **paddingPropKey** is a **FloatPropKey**, it's like a state with a float value. It will be constantly updated with the latest value inside the transition. Now we have two states. One with the Name **A** and a paddingPropKey value of **0f** and one with the Name **B** and a paddingPropKey value of **200f**. Next we have to define a transistion between **A** and **B**. ```kotlin private val paddingPropKey = FloatPropKey() private val paddingTransitionDefinition = transitionDefinition { state("A"){ this[paddingPropKey] = 0f } state("B") { this[paddingPropKey] = 200f } transition("A" to "B") { paddingPropKey using repeatable { animation = tween { duration = 1000 easing = FastOutLinearInEasing } iterations = Infinite } } } ``` With ```kotlin transition("A" to "B") ``` a transistion between state **A** and state **B** is definied. Inside the transition you have to define **how**, **how long** and **how often** the transition should happen. paddingPropKey using repeatable