Lewati ke konten utama

Animation Guidelines

Prinsip​

  1. Purposeful — Animasi harus memiliki tujuan (feedback, transition, attention).
  2. Fast — Durasi ideal: 200–300ms. Jangan lebih dari 500ms.
  3. Interruptible — User harus bisa membatalkan/menginterupsi animasi.
  4. Respect Reduced Motion — Hormati setting Reduce Motion di device user.

Duration Guide​

TipeDurasiContoh
Micro-interaction100–200msButton press, toggle, ripple
Transition200–300msScreen transition, modal appear
Complex animation300–500msPage reveal, skeleton loading
BackgroundLoop / infiniteShimmer effect, loading spinner

Checking Reduce Motion​

Selalu cek preferensi user sebelum menampilkan animasi:

PlatformAPI
AndroidSettings.Global.getFloat(contentResolver, Settings.Global.ANIMATOR_DURATION_SCALE) — bernilai 0f jika reduce motion aktif
iOSUIAccessibility.isReduceMotionEnabled
FlutterMediaQuery.of(context).disableAnimations
React NativeAccessibilityInfo.isReduceMotionEnabled()
Jetpack Compose

Sejak Compose 1.2.0, API animasi bawaan Compose (animate*AsState, Animatable, dll.) sudah otomatis menghormati setting reduce motion — cek manual di atas hanya diperlukan untuk animasi custom di luar API Compose (custom Canvas drawing, dsb.).