3 min
Core in animations is scroll, gesture, keyboard, layout, and transition
Core, for me, is whatever writes the animated value. That list is scroll, gesture, keyboard, sensor, layout, and transition.
A screen moves because something is writing a number. Scroll position, a finger, a keyboard frame, a sensor, a mount. I file the writer under Core, not the library that happens to store the number. These are the drivers I keep on that shelf.
opacity = scrollY / headerHeight;
translateX = translationX;
paddingBottom = keyboardHeight;
The lines are the terms. Scroll-driven, gesture-driven, keyboard-driven. The rest of Core is the same kind of writer.
Scroll-driven
Scroll-driven maps a list offset into something else. A header that shrinks, a title that fades, a bar that sticks once contentOffset.y passes a line. The list is the clock. The view is just reading it.
Gesture-driven
Gesture-driven is a finger owning the number. Pan for a sheet, pinch for a photo, a long-press that picks a row up. The value follows the touch, and it lets go when the gesture ends. If the motion dies when the finger lifts, it belongs here.
Keyboard-driven
Keyboard-driven is the frame, not the field. The composer, the footer, the sheet that has to rise when the keyboard opens and sit back down when it closes. The input still lives with forms. The motion that tracks the frame lives here.
Sensor-driven
Sensor-driven reads the phone instead of the thumb. Tilt, motion, a heading. A parallax that follows the device, or a value that updates because the phone moved. No list, no pan. The sample is the driver.
Layout
Layout is a measure. A sibling grew, a row was inserted, the available width changed, and the others have to ease into the new boxes. The driver is the layout pass, not a gesture and not a scroll.
Entering and exiting
Entering / exiting is the mount clock and the unmount clock. The view is arriving or leaving. Fade in, slide out, a delay before the next row appears. It is not a transition between two states that are both already on screen. It is the view showing up or going away.
Transition
Transition is the handoff between two states that stay mounted. A tab indicator moving to the next item, a selected card expanding, a toggle that travels instead of popping. Both ends exist. Core owns the trip between them.
What Core is not
None of those are painters. A Skia path or a Lottie timeline is Graphics. A shimmer or a stagger is Patterns, the nickname you already say out loud. Both usually sit on a Core driver: scroll into a shader, a gesture into a morph, an entering delay into a stagger.
I used to mix the three. A scroll header landed next to Skia logos and shimmer cards. Finding got worse. First the driver. Then the paint. Then the nickname.
This is the shelf
Everything I keep for those drivers lives in the Core group. New scroll-driven, gesture-driven, keyboard-driven, sensor-driven, layout, entering / exiting, and transition work lands there whenever I find it.