Animace v mobilním vývoji: co to je, jaké jsou typy a jak je používat

Autor: IT Sectr Publikováno: 2026-02-26 Doba čtení: 10 min

Animace v mobilních aplikacích je činí živými a responzivními, usměrňuje pozornost uživatele a zlepšuje vnímání rozhraní. V tomto článku si probereme hlavní typy animací v iOS a Android: Property Animation, View Animation, UIKit Dynamics, Core Animation, Lottie, Rive, Spring Animation, Hero Animation a Shared Element Transition. Materiál pomůže začínajícím vývojářům pochopit, jaké nástroje a knihovny zvolit pro konkrétní úkol. Více podrobností — v oficiální dokumentaci Android Animations.

Hlavní body

  • Property Animation (Android) mění reálné vlastnosti objektu, View Animation — pouze vizuální zobrazení
  • Core Animation a UIView.animate (iOS) poskytují vestavěné možnosti pro animaci vrstev a pohledů
  • Lottie a Rive umožňují vkládání složité vektorové animace z After Effects a Rive Editor
  • Hero Animation (Shared Element Transition) vytváří plynulé přechody mezi obrazovkami
  • Spring Animation s fyzikou pružiny a Easing (Interpolator) dělají animaci přirozenou

Animace v Android: Property Animation a View Animation

Android poskytuje dva hlavní animační systémy: View Animation (zastaralý) a Property Animation (moderní). View Animation (neboli Tween Animation) pracuje pouze s vizuální reprezentací — mění zobrazení Pohledu, ale ne jeho skutečné vlastnosti (například souřadnice kliknutí zůstávají na místě). Property Animation, představená v Android 3.0, mění reálné vlastnosti objektu pomocí Animator — ValueAnimator, ObjectAnimator nebo AnimatorSet.

ObjectAnimator a ValueAnimator

ObjectAnimator je nejoblíbenější třída Property Animation. Animuje konkrétní vlastnost objektu (například translationX, alpha, scaleY) po určenou dobu s daným Interpolatorem.

kotlin
ObjectAnimator.ofFloat(myView, "translationX", 0f, 300f).apply {
    duration = 500
    interpolator = FastOutSlowInInterpolator()
    startDelay = 200
}.start()

ValueAnimator není vázán na konkrétní objekt — generuje hodnoty, které lze použít pro jakoukoli vlastnost nebo vlastní logiku.

View Animation a XML animace

View Animation je popsána v XML souborech res/anim/. Podporovány jsou čtyři typy: scale, translate, rotate, alpha. Nevýhodou je, že animace nemění reálné parametry Pohledu. Pro jednoduché efekty (blikání, otáčení) je View Animation stále použitelná, ale pro nové projekty se doporučuje Property Animation.

Animace v Jetpack Compose

Jetpack Compose nabízí moderní API pro animace: animateAsState, Animatable, AnimatedVisibility a AnimatedContent. Animace v Compose je reaktivní: když se změní stav, animace se spustí automaticky.

kotlin
var expanded = remember { mutableStateOf(false) }
val size = animateAsState(
    if (expanded) 200f else 50f
)
Box(
    modifier = Modifier
        .size(size.value, size.value)
        .clickable { expanded = !expanded }
        .background(Color.Blue)
)

Animace v iOS: Core Animation a UIView.animate

iOS poskytuje výkonný animační stack založený na Core Animation — nízkoúrovňovém frameworku pracujícím s CALayer. UIKit staví na Core Animation s pohodlnými metodami UIView.animate a UIViewPropertyAnimator.

UIView.animate

UIView.animate je nejjednodušší způsob animace v iOS. Umožňuje animovat frame, alpha, transform, backgroundColor a další vlastnosti UIView.

swift
UIView.animate(
    withDuration: 0.5,
    delay: 0.2,
    usingSpringWithDamping: 0.6,
    initialSpringVelocity: 1.0,
    options: [.curveEaseInOut]
) {
    myView.frame.origin.x += 300
    myView.alpha = 0.5
}

UIKit Dynamics

UIKit Dynamics — framework pro fyzikální animaci: gravitace, kolize, pružiny, přitažlivé síly. Umožňuje vytvářet realistické chování objektů bez ručního výpočtu fyziky. Používá se pro vlastní přechody, animovaná menu a herní prvky.

CAAnimation a Core Animation

Core Animation (CAAnimation, CABasicAnimation, CAKeyframeAnimation) — nízkoúrovňové API pro animaci CALayer. Podporuje 3D transformace, animaci cesty (keyframe), maskování a kompozici. SwiftUI používá Core Animation pod kapotou prostřednictvím modifikátorů animation a withAnimation.

swift
let animation = CABasicAnimation(keyPath: "transform.rotation.z")
animation.fromValue = 0
animation.toValue = CGFloat.pi * 2
animation.duration = 1.0
animation.repeatCount = .infinity
myLayer.add(animation, forKey: "rotation")

Pro většinu iOS projektů se používá SwiftUI s jeho vestavěnou animací. Například withAnimation obaluje změny stavu do animovaného kontextu.

Vektorová animace: Lottie a Rive

Složité animace (postavy, přechody, načítače) je obtížné implementovat kódem. Lottie a Rive řeší tento problém tím, že umožňují designérům vytvářet animace ve vizuálních editorech a vývojářům je vkládat do aplikace jako hotovou komponentu.

Lottie

Lottie — knihovna od Airbnb (nyní LottieFiles), která vykresluje animace z Adobe After Effects exportované ve formátu JSON. Podporována na Android, iOS, Flutter, React Native a Web. Lottie animace jsou vektorové, škálují se bez ztráty kvality a lze je programově přizpůsobit (rychlost, průběh, barvy).

kotlin
// Android
import com.airbnb.lottie.LottieAnimationView
val lottieView = findViewById<LottieAnimationView>(R.id.lottieView)
lottieView.setAnimation(R.raw.loading_animation)
lottieView.playAnimation()

Rive

Rive (dříve 2Dimensions) — pokročilejší nástroj pro vektorovou animaci. Na rozdíl od Lottie, Rive podporuje interaktivní animaci: stavy, spouštěče, přechody. Animace se vytváří v Rive Editor a v aplikaci se ovládá pomocí State Machine. Rive je vhodný pro herní rozhraní, animované ikony a složité přechody se zpětnou vazbou.

V IT Sectr používáme Lottie pro dekorativní animace (načítače, úspěšné operace, prázdné stavy) a Rive pro interaktivní prvky onboardingových obrazovek. To zkracuje dobu vývoje animací o 60% ve srovnání s ruční implementací na UIKit nebo Canvas.

Shared Element Transition a Hero Animation

Shared Element Transition — animace, při které se prvek (obrázek, text, karta) plynule pohybuje a transformuje při přechodu mezi obrazovkami. To vytváří iluzi kontinuity: uživatel "nepřechází" na novou obrazovku, ale "propadává se" do prvku.

Android Shared Element Transition

V Android je přechod implementován pomocí ActivityOptionsCompat a atributů transitionName. FragmentTransaction podporuje addSharedElement pro přechody v rámci Activity. Compose používá SharedTransitionLayout s SharedContentState.

iOS Hero Transition

iOS nemá vestavěný Hero Transition, ale knihovna Hero (od Luke Zhao) implementuje tento vzor na UIKit. Jednoduše přiřaďte id prvkům na obou obrazovkách — Hero automaticky vytvoří plynulý přechod. V SwiftUI je přechodová animace vestavěna přes NavigationStack a matchedGeometryEffect.

Flutter Hero

Flutter má vestavěný widget Hero s parametrem tag. Když dvě stránky obsahují Hero se stejným tagem, Flutter automaticky animuje přechod mezi nimi. To je jeden z nejjednodušších způsobů implementace složité animace v mobilní aplikaci.

dart
Hero(
    tag: 'profile_avatar',
    child: CircleAvatar(
        backgroundImage: AssetImage('avatar.jpg'),
        radius: 50,
    ),
)

Spring Animation, Interpolator a Easing

Aby animace vypadala přirozeně, používají se křivky rychlosti — Interpolator v Android a Easing v iOS. Určují, jak se rychlost animace mění od začátku do konce.

Android Interpolators

Android podporuje několik vestavěných Interpolatorů: LinearInterpolator (rovnoměrně), AccelerateDecelerateInterpolator (pomalu-rychle-pomalu), FastOutSlowInInterpolator (Material Design), OvershootInterpolator (s přestřelem) a BounceInterpolator (s odskokem). Vlastní Interpolator lze vytvořit pomocí XML nebo třídy TimeInterpolator.

Interpolator Chování Použití
LinearInterpolatorKonstantní rychlostIndikátory načítání, nekonečné rotace
FastOutSlowInInterpolatorRychlý start, plynulý konecMaterial Design, zobrazování karet
OvershootInterpolatorPřestřelí cíl a vrátí seAkcentní prvky, tlačítka
BounceInterpolatorOdskok na konciSeznamy, pull-to-refresh

Spring Animation

Spring Animation (pružinová animace) modeluje fyziku pružiny s parametry tlumení (damping) a tuhosti (stiffness). Tlumení 0 — nekonečné oscilace, 1 — bez oscilací. Tuhost určuje rychlost návratu. Spring Animation je k dispozici v iOS (UIViewPropertyAnimator s UISpringTimingParameters), Android (SpringAnimation z physics2) a SwiftUI (spring()).

Dokumentace Spring Animation v Android obsahuje podrobné příklady konfigurace.

Časová osa animace

Timeline (časová osa) — přístup, kdy je animace rozdělena na snímky v čase. Používá se pro složité sekvence, kde AnimationSet nebo skupinová animace nejsou dostatečně flexibilní. Android podporuje AnimatorSet, iOS — CAAnimationGroup, Flutter — Interval v AnimationController.

Часто задаваемые вопросы

Čím se liší Property Animation od View Animation?

View Animation (Android) mění pouze vizuální zobrazení Pohledu bez změny skutečných vlastností (pozice kliknutí se nemění). Property Animation mění skutečné vlastnosti objektu, což poskytuje flexibilnější a předvídatelnější chování. Pro nové projekty vždy používejte Property Animation.

Co je Hero Animation?

Hero Animation je animace, při které se prvek plynule pohybuje a transformuje při přechodu mezi obrazovkami a vytváří iluzi kontinuity. Implementuje se pomocí Hero (Flutter), SharedElementTransition (Android) nebo matchedGeometryEffect (SwiftUI).

K čemu jsou Lottie a Rive?

Lottie a Rive jsou knihovny pro vykreslování vektorové animace za běhu. Designér vytvoří animaci v After Effects (Lottie) nebo Rive Editor, exportuje do JSON a vývojář ji vloží bez ručního psaní animačního kódu.

Co je Spring Animation a proč je užitečná?

Spring Animation modeluje fyziku pružiny: animace má přirozené tlumení a "odskok". SwiftUI a Jetpack Compose podporují spring animace přímo z krabice, což dělá rozhraní živějším a citlivějším.

Jak vybrat správný Interpolator?

Výběr závisí na kontextu: FastOutSlowIn — pro zobrazování prvků, Overshoot — pro akcenty, Linear — pro indikátory načítání, Bounce — pro seznamy. Material Design doporučuje standardní křivky: standard easing, deceleration easing a acceleration easing.

Shrnutí

  • Property Animation (Android ObjectAnimator) — moderní standard nahrazující View Animation
  • iOS používá UIView.animate a Core Animation pro řízení animace na úrovni vrstev
  • Lottie a Rive zjednodušují vkládání složité vektorové animace z designových nástrojů
  • Hero Animation (Shared Element Transition) zlepšuje vnímání navigace mezi obrazovkami
  • Spring Animation a správná volba Interpolator / Easing dělají animaci přirozenou
  • Flutter poskytuje vestavěný widget Hero pro přechody a AnimationController pro vlastní animaci
  • Jetpack Compose a SwiftUI mají vestavěnou reaktivní animaci pomocí animateAsState a withAnimation

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt