Skip to content

Motion physics system ​

The motion physics system makes a UI expressive and easy to use

How it works · Specs

Cross-platform experiences ​

The motion physics system is available on Jetpack Compose and Android Views (MDC-Android), and can be easily adapted to other platforms.

PlatformStatusHow to apply
Jetpack ComposeAvailableUse built-in components and spring tokens.
Android Views (MDC-Android)Available. Not added to components.Use built-in spring tokens.
WebCompatibleUse springs when possible, otherwise use curves that mimic the springs for animations without interruptions or gestures. View web conversion table

Tokens and specs ​

The spring composite tokens are used in the motion physics system. These composites combine two spring tokens (damping and stiffness) into a single token for ease of use. The easing, duration, and path tokens are used by the legacy system, so can be ignored.

Design tokens

Token table

Machine-readable relationship table

Motion tokens · 1 token set · 45 tokens · live token table · DSDB TOKEN_TYPE_UNSPECIFIED.20543ce18892f7d9

  • Default context: Platform: Android · Motion scheme: Standard
  • Not configurable here (group default used): Theme: Light · Audience: 1P Baseline · Font: Static · Contrast: Default · iOS dark theme elevation: None · iOS weight setting: Default · Language height: Small
  • Other contexts: Platform: Web, Compose · Motion scheme: Expressive. "Other contexts" lists values that differ from the default when only that one context changes.
  • Reference chain: aliases from the token to its source value (token → alias → … → value). "—" means the token holds a literal value.

Motion · md.sys.motion · 45 tokens

For all motion. Includes spring tokens (physics system), and legacy easing and duration tokens.

GroupTokenTypeReference chainResolved valueOther contexts
Easingmd.sys.motion.easing.emphasizedCubic bezier—M 0,0 C 0.05, 0, 0.133333, 0.06, 0.166666, 0.4 C 0.208333, 0.82, 0.25, 1, 1, 1Web: cubic-bezier(0.2, 0, 0, 1) via md.sys.motion.easing.standard
Compose: cubic-bezier(0.2, 0, 0, 1)
Easingmd.sys.motion.easing.emphasized.accelerateCubic bezier—cubic-bezier(0.3, 0, 0.8, 0.15)—
Easingmd.sys.motion.easing.emphasized.decelerateCubic bezier—cubic-bezier(0.05, 0.7, 0.1, 1)—
Easingmd.sys.motion.easing.standardCubic bezier—cubic-bezier(0.2, 0, 0, 1)—
Easingmd.sys.motion.easing.standard.accelerateCubic bezier—cubic-bezier(0.3, 0, 1, 1)—
Easingmd.sys.motion.easing.standard.decelerateCubic bezier—cubic-bezier(0, 0, 0, 1)—
Easingmd.sys.motion.easing.legacyCubic bezier—cubic-bezier(0.4, 0, 0.2, 1)—
Easingmd.sys.motion.easing.legacy.accelerateCubic bezier—cubic-bezier(0.4, 0, 1, 1)—
Easingmd.sys.motion.easing.legacy.decelerateCubic bezier—cubic-bezier(0, 0, 0.2, 1)—
Easingmd.sys.motion.easing.linearCubic bezier—cubic-bezier(0, 0, 1, 1)—
Durationmd.sys.motion.duration.short1Duration—50ms—
Durationmd.sys.motion.duration.short2Duration—100ms—
Durationmd.sys.motion.duration.short3Duration—150ms—
Durationmd.sys.motion.duration.short4Duration—200ms—
Durationmd.sys.motion.duration.medium1Duration—250ms—
Durationmd.sys.motion.duration.medium2Duration—300ms—
Durationmd.sys.motion.duration.medium3Duration—350ms—
Durationmd.sys.motion.duration.medium4Duration—400ms—
Durationmd.sys.motion.duration.long1Duration—450ms—
Durationmd.sys.motion.duration.long2Duration—500ms—
Durationmd.sys.motion.duration.long3Duration—550ms—
Durationmd.sys.motion.duration.long4Duration—600ms—
Durationmd.sys.motion.duration.extra-long1Duration—700ms—
Durationmd.sys.motion.duration.extra-long2Duration—800ms—
Durationmd.sys.motion.duration.extra-long3Duration—900ms—
Durationmd.sys.motion.duration.extra-long4Duration—1000ms—
Stylemd.sys.motion.pathMotion path—standard path Linear—
Springmd.sys.motion.spring.fast.spatial.dampingNumeric—0.9Expressive: 0.6
Springmd.sys.motion.spring.fast.spatial.stiffnessNumeric—1400Expressive: 800
Springmd.sys.motion.spring.fast.effects.dampingNumeric—1—
Springmd.sys.motion.spring.fast.effects.stiffnessNumeric—3800—
Springmd.sys.motion.spring.default.spatial.dampingNumeric—0.9Expressive: 0.8
Springmd.sys.motion.spring.default.spatial.stiffnessNumeric—700Expressive: 380
Springmd.sys.motion.spring.default.effects.dampingNumeric—1—
Springmd.sys.motion.spring.default.effects.stiffnessNumeric—1600—
Springmd.sys.motion.spring.slow.spatial.dampingNumeric—0.9Expressive: 0.8
Springmd.sys.motion.spring.slow.spatial.stiffnessNumeric—300Expressive: 200
Springmd.sys.motion.spring.slow.effects.dampingNumeric—1—
Springmd.sys.motion.spring.slow.effects.stiffnessNumeric—800—
Othermd.sys.motion.spring.fast.spatialCustom compositecomposite
+2 variation axes
damping 0.9 · stiffness 1400Expressive: damping 0.6 · stiffness 800
Othermd.sys.motion.spring.fast.effectsCustom compositecomposite
+2 variation axes
damping 1 · stiffness 3800—
Othermd.sys.motion.spring.default.spatialCustom compositecomposite
+2 variation axes
damping 0.9 · stiffness 700Expressive: damping 0.8 · stiffness 380
Othermd.sys.motion.spring.default.effectsCustom compositecomposite
+2 variation axes
damping 1 · stiffness 1600—
Othermd.sys.motion.spring.slow.spatialCustom compositecomposite
+2 variation axes
damping 0.9 · stiffness 300Expressive: damping 0.8 · stiffness 200
Othermd.sys.motion.spring.slow.effectsCustom compositecomposite
+2 variation axes
damping 1 · stiffness 800—

Web: Convert springs to curves ​

SpringCurve
Expressive fast spatial0.42, 1.67, 0.21, 0.90. Duration = 350ms
Expressive default spatial0.38, 1.21, 0.22, 1.00. Duration = 500ms
Expressive slow spatial0.39, 1.29, 0.35, 0.98. Duration = 650ms
Expressive fast effects0.31, 0.94, 0.34, 1.00. Duration = 150ms
Expressive default effects0.34, 0.80, 0.34, 1.00. Duration = 200ms
Expressive slow effects0.34, 0.88, 0.34, 1.00. Duration = 300ms
Standard fast spatial0.27, 1.06, 0.18, 1.00. Duration = 350ms
Standard default spatial0.27, 1.06, 0.18, 1.00. Duration = 500ms
Standard slow spatial0.27, 1.06, 0.18, 1.00. Duration = 750ms
Standard fast effects0.31, 0.94, 0.34, 1.00. Duration = 150ms
Standard default effects0.34, 0.80, 0.34, 1.00. Duration = 200ms
Standard slow effects0.34, 0.88, 0.34, 1.00. Duration = 300ms

Easing and duration ​

The original easing and duration tokens are still available to use as a fallback, and are currently used for animating transitions. View easing and duration system

Unofficial offline mirror. Content © Google, licensed under CC BY 4.0.