Animacija u mobilnom razvoju: šta je to, koje vrste postoje i kako koristiti

Аутор: IT Sectr Објављено: 2026-02-26 Време читања: 10 мин

Animacija mobilnih aplikacija čini ih živim i odzivnim, usmeravajući pažnju korisnika i poboljšavajući percepciju interfejsa. U ovom članku ćemo obraditi glavne vrste animacija u iOS i Android: Property Animation, View Animation, UIKit Dynamics, Core Animation, Lottie, Rive, Spring Animation, Hero Animation i Shared Element Transition. Materijal će pomoći početnicima da razumeju koje alate i biblioteke izabrati za odreðeni zadatak. Više detalja — u zvaničnoj dokumentaciji Android Animations.

Glavno

  • Property Animation (Android) menja stvarne osobine objekta, View Animation — samo vizuelni prikaz
  • Core Animation i UIView.animate (iOS) pružaju ugraðene mogućnosti za animaciju slojeva i view
  • Lottie i Rive omogućavaju ugradnju složene vektorske animacije iz After Effects i Rive Editor
  • Hero Animation (Shared Element Transition) stvara glatke prelaze izmeðu ekrana
  • Spring Animation sa fizikom opruge i Easing (Interpolator) čine animaciju prirodnom

Animacija u Android: Property Animation i View Animation

Android pruža dva glavna sistema animacije: View Animation (stariji) i Property Animation (moderni). View Animation (ili Tween Animation) radi samo sa vizuelnom reprezentacijom — menja prikaz View, ali ne i njene stvarne osobine (na primer, koordinate klika ostaju na mestu). Property Animation, predstavljena u Android 3.0, menja stvarne osobine objekta kroz Animator — ValueAnimator, ObjectAnimator ili AnimatorSet.

ObjectAnimator i ValueAnimator

ObjectAnimator je najpopularnija klasa Property Animation. Animira odreðenu osobinu objekta (na primer, translationX, alpha, scaleY) u odreðenom vremenu sa zadatim Interpolator-om.

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

ValueAnimator nije vezan za odreðeni objekat — generiše vrednosti koje se mogu koristiti za bilo koju osobinu ili prilagoðenu logiku.

View Animation i XML animacije

View Animation se opisuje u XML datotekama res/anim/. Podržana su četiri tipa: scale, translate, rotate, alpha. Nedostatak je što animacija ne menja stvarne parametre View. Za jednostavne efekte (treptanje, rotacija) View Animation je i dalje primenljiva, ali za nove projekte preporučuje se Property Animation.

Animacija u Jetpack Compose

Jetpack Compose nudi moderan API za animaciju: animateAsState, Animatable, AnimatedVisibility i AnimatedContent. Animacija u Compose je reaktivna: kada se stanje promeni, animacija se automatski pokreće.

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)
)

Animacija u iOS: Core Animation i UIView.animate

iOS pruža moćan stek animacije zasnovan na Core Animation — niskorazinskom okviru koji radi sa CALayer. UIKit se nadograðuje na Core Animation sa praktičnim metodama UIView.animate i UIViewPropertyAnimator.

UIView.animate

UIView.animate je najjednostavniji način animacije u iOS. Omogućava animiranje frame, alpha, transform, backgroundColor i drugih osobina 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 — okvir za fizičku animaciju: gravitacija, sudari, opruge, sile privlačenja. Omogućava stvaranje realističnog ponašanja objekata bez ručnog izračunavanja fizike. Koristi se za prilagoðene prelaze, animirane menije i elemente igara.

CAAnimation i Core Animation

Core Animation (CAAnimation, CABasicAnimation, CAKeyframeAnimation) — niskorazinski API za animaciju CALayer. Podržava 3D transformacije, animaciju putanje (keyframe), maskiranje i kompoziciju. SwiftUI koristi Core Animation ispod haube kroz modifikatore animation i 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")

Za većinu iOS projekata koristi se SwiftUI sa svojom ugraðenom animacijom. Na primer, withAnimation obavija promene stanja u animirani kontekst.

Vektorska animacija: Lottie i Rive

Složene animacije (likovi, prelazi, učitavači) teško je implementirati kodom. Lottie i Rive rešavaju ovaj problem omogućavajući dizajnerima da kreiraju animaciju u vizuelnim editorima, a programerima da je ugradje u aplikaciju kao gotovu komponentu.

Lottie

Lottie — biblioteka od Airbnb (sada LottieFiles) koja renderuje animacije iz Adobe After Effects izvezene u JSON formatu. Podržana na Android, iOS, Flutter, React Native i Web. Lottie animacije su vektorske, skaliraju se bez gubitka kvaliteta i mogu se programski prilagoðavati (brzina, napredak, boje).

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

Rive

Rive (ranije 2Dimensions) — napredniji alat za vektorsku animaciju. Za razliku od Lottie, Rive podržava interaktivnu animaciju: stanja, okidače, prelaze. Animacija se kreira u Rive Editor, a u aplikaciji se upravlja kroz State Machine. Rive je pogodan za interfejse igara, animirane ikone i složene prelaze sa povratnom spregom.

U IT Sectr koristimo Lottie za dekorativne animacije (učitavači, uspešne operacije, prazna stanja) i Rive za interaktivne elemente onboarding ekrana. Ovo smanjuje vreme razvoja animacija za 60% u poreðenju sa ručnom implementacijom na UIKit ili Canvas.

Shared Element Transition i Hero Animation

Shared Element Transition — animacija u kojoj se element (slika, tekst, kartica) glatko pomera i transformiše pri prelazu izmeðu ekrana. Ovo stvara iluziju kontinuiteta: korisnik ne "odlazi" na novi ekran, već "uranja" u element.

Android Shared Element Transition

U Android prelaz se implementira kroz ActivityOptionsCompat i atribute transitionName. FragmentTransaction podržava addSharedElement za prelaze unutar Activity. Compose koristi SharedTransitionLayout sa SharedContentState.

iOS Hero Transition

iOS nema ugraðeni Hero Transition, ali biblioteka Hero (od Luke Zhao) implementira ovaj obrazac na UIKit. Jednostavno dodelite id elementima na oba ekrana — Hero æe automatski kreirati gladak prelaz. U SwiftUI, animacija prelaza je ugraðena kroz NavigationStack i matchedGeometryEffect.

Flutter Hero

Flutter ima ugraðeni widget Hero sa parametrom tag. Kada dve stranice sadrže Hero sa istim tag-om, Flutter automatski animira prelaz izmeðu njih. Ovo je jedan od najjednostavnijih načina za implementaciju složene animacije u mobilnoj aplikaciji.

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

Spring Animation, Interpolator i Easing

Da bi animacija izgledala prirodno, koriste se krive brzine — Interpolator u Android i Easing u iOS. One odreðuju kako se brzina animacije menja od početka do kraja.

Android Interpolators

Android podržava nekoliko ugraðenih Interpolator-a: LinearInterpolator (ravnomerno), AccelerateDecelerateInterpolator (sporo-brzo-sporo), FastOutSlowInInterpolator (Material Design), OvershootInterpolator (sa preletanjem) i BounceInterpolator (sa odskokom). Prilagoðeni Interpolator se može kreirati kroz XML ili klasu TimeInterpolator.

Interpolator Ponašanje Primena
LinearInterpolatorKonstantna brzinaIndikatori učitavanja, beskrajne rotacije
FastOutSlowInInterpolatorBrzi početak, glatki završetakMaterial Design, pojavljivanje kartica
OvershootInterpolatorPreleće cilj i vraća seAkcentni elementi, dugmad
BounceInterpolatorOdskok na krajuListe, pull-to-refresh

Spring Animation

Spring Animation (animacija opruge) modelira fiziku opruge sa parametrima prigušenja (damping) i krutosti (stiffness). Prigušenje 0 — beskrajne oscilacije, 1 — bez oscilacija. Krutost odreðuje brzinu povratka. Spring Animation je dostupna u iOS (UIViewPropertyAnimator sa UISpringTimingParameters), Android (SpringAnimation iz physics2) i SwiftUI (spring()).

Dokumentacija Spring Animation u Android sadrži detaljne primere podešavanja.

Timeline animacija

Timeline (vremenska linija) — pristup u kome se animacija deli na kadrove u vremenu. Koristi se za složene sekvence gde AnimationSet ili grupna animacija nisu dovoljno fleksibilni. Android podržava AnimatorSet, iOS — CAAnimationGroup, Flutter — Interval u AnimationController.

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

Po čemu se razlikuje Property Animation od View Animation?

View Animation (Android) menja samo vizuelni prikaz View bez promene stvarnih osobina (pozicija klika se ne menja). Property Animation menja stvarne osobine objekta, pružajući fleksibilnije i predvidivije ponašanje. Za nove projekte uvek koristite Property Animation.

Šta je Hero Animation?

Hero Animation je animacija u kojoj se element glatko pomera i transformiše pri prelazu izmeðu ekrana, stvarajući iluziju kontinuiteta. Implementira se kroz Hero (Flutter), SharedElementTransition (Android) ili matchedGeometryEffect (SwiftUI).

Zašto su potrebni Lottie i Rive?

Lottie i Rive su biblioteke za renderovanje vektorske animacije u vremenu izvršenja. Dizajner kreira animaciju u After Effects (Lottie) ili Rive Editor, izvozi u JSON, a programer je ugraðuje bez ručnog pisanja koda animacije.

Šta je Spring Animation i zašto je korisna?

Spring Animation modelira fiziku opruge: animacija ima prirodno prigušenje i "odskok". SwiftUI i Jetpack Compose podržavaju spring animacije iz kutije, čineći interfejs življim i odzivnijim.

Kako izabrati pravi Interpolator?

Izbor zavisi od konteksta: FastOutSlowIn — za pojavljivanje elemenata, Overshoot — za akcente, Linear — za indikatore učitavanja, Bounce — za liste. Material Design preporučuje standardne krive: standard easing, deceleration easing i acceleration easing.

Sažetak

  • Property Animation (Android ObjectAnimator) — moderni standard koji zamenjuje View Animation
  • iOS koristi UIView.animate i Core Animation za kontrolu animacije na nivou slojeva
  • Lottie i Rive pojednostavljuju ugradnju složene vektorske animacije iz dizajn alata
  • Hero Animation (Shared Element Transition) poboljšava percepciju navigacije izmeðu ekrana
  • Spring Animation i pravilan izbor Interpolator / Easing čine animaciju prirodnom
  • Flutter pruža ugraðeni widget Hero za prelaze i AnimationController za prilagoðenu animaciju
  • Jetpack Compose i SwiftUI imaju ugraðenu reaktivnu animaciju kroz animateAsState i withAnimation

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту