View Animation — mi ez, Tween Animation Androidban

Szerző: IT Sectr Megjelenés: 2026-03-01 Olvasási idő: 8 perc

View Animation — egy elavult Android API 1+ animációs rendszer, amely View objektumokkal dolgozik Tween Animation (Alpha, Translate, Scale, Rotate) segítségével. A Google a Property Animation (Animator) ajánlja minden új projekthez. A cikk elmagyarázza az elveket, típusokat, XML konfigurációt és az elhagyás okait.

Főbb pontok

  • View Animation — View animáció Tween Animation-en keresztül: Alpha, Translate, Scale, Rotate
  • XML meghatározás — az animációk a res/anim/ mappában írhatók le , , , elemekkel
  • AnimationSet — több animáció kombinációja egy készletben közös paraméterekkel
  • Korlátozás — a View Animation nem a tulajdonságokat, hanem csak a megjelenítést változtatja: a View az eredeti pozícióban marad
  • Property Animation — modern helyettesítő (Animator), amely az objektumok valós tulajdonságaival dolgozik

Mi az a View Animation?

View Animation — az Android animációs alrendszere, amely View szinten működik (API 1+). Négy Tween Animation típust használ: AlphaAnimation (átlátszóság), TranslateAnimation (eltolás), ScaleAnimation (méretezés) és RotateAnimation (forgatás). Minden animáció egy XML fájlban van leírva a res/anim/ mappában, vagy programozottan jön létre Kotlin kódban.

A View Animation mechanizmus nem változtatja meg a View valós tulajdonságait — újrarajzolja a View-t új pozícióban, méretben vagy átlátszóságban, de az onTouchEvent() visszahívás az eredeti hely koordinátáit kapja. Ez a kulcsfontosságú korlátozás, amely kattintás-eltérésként (click mismatch) ismert.

Az Android Developer Documentation (2026) szerint a Google az Android 3.0 (API 11) verziótól kezdve elavultként jelöli a View Animation-t. Új projektekhez a Property Animation ajánlott — Animator, AnimatorSet és ObjectAnimator, amelyek setter metódusokon keresztül dolgoznak az objektumok valós tulajdonságaival.

A Tween Animation típusai

Tween Animation — animáció „kulcskockák között“: megadja a kezdeti és végső állapotot, a rendszer pedig kiszámítja a köztes kockákat. Az Android négy szabványos típust kínál, mindegyik saját paraméterkészlettel.

AlphaAnimation

AlphaAnimation megváltoztatja a View átlátszóságát fromAlpha-tól toAlpha-ig. Értékek 0.0 (teljesen átlátszó) és 1.0 (teljesen látható) között. Alapértelmezés szerint az animáció 300 ms-ig tart. A fillAfter=true paraméter a View-t a végső átlátszósági állapotban hagyja.

xml
<!-- res/anim/fade_out.xml -->
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1.0"
    android:toAlpha="0.0"
    android:duration="500"
    android:fillAfter="true" />

TranslateAnimation

TranslateAnimation eltolja a View-t a kezdeti pozícióból (fromXDelta, fromYDelta) a végső pozícióba (toXDelta, toYDelta). Az értékeket pixelben, a szülő százalékában vagy magának a View-nak a százalékában adják meg. Például 100% a View szélességének 100%-át jelenti.

ScaleAnimation

ScaleAnimation méretezi a View-t a pivotX/pivotY ponthoz képest. fromXScale=1.0, toXScale=2.0 megkétszerezi a szélességet. A pivotType paraméter határozza meg, hogy mihez képest számítódik a pivot: self, parent vagy absolute. A méretezési animáció nem változtatja meg a View valós méreteit — csak a megjelenítést.

RotateAnimation

RotateAnimation elforgatja a View-t a pivot pont körül fromDegrees-től toDegrees-ig terjedő szöggel. A szög fokban van mérve: 0 — kiinduló helyzet, 360 — teljes forgatás. Végtelen forgatáshoz használja a repeatCount=INFINITE értéket.

View Animation vs Property Animation

A különbség a View Animation és a Property Animation (Animator) között — alapvető különbség az Android animációs architektúrájában. A View Animation csak a megjelenítésen működik, a Property Animation setter metódusokon keresztül megváltoztatja az objektum valós tulajdonságait, ami a layout frissítéséhez vezet.

SzempontView AnimationProperty Animation
API szintAPI 1+ (elavult)API 11+ (ajánlott)
Mit animálView megjelenítés (canvas)Objektum tulajdonságai (setter)
Kattintás animáció utánEredeti pozícióbanÚj pozícióban
Animáció típusok4 Tween + AnimationSetObjectAnimator, ValueAnimator, AnimatorSet
LayoutParamsNem változtatsetLayoutParams-on keresztül változtat
TeljesítményMagas (csak canvas)Közepes (setter-től függ)

Animációk XML konfigurációja

View Animation általában a res/anim/ XML fájlokban van definiálva a (AnimationSet) gyökérelemmel vagy a négy típus egyikével. Az AnimationSet lehetővé teszi animációk kombinálását közös startOffset, duration, interpolator paraméterekkel.

xml
<!-- res/anim/bounce.xml -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/bounce_interpolator">

    <translate
        android:fromYDelta="0%"
        android:toYDelta="-100%"
        android:duration="600" />

    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.3"
        android:duration="600" />
</set>

Az XML fájl a AnimationUtils.loadAnimation() segítségével töltődik be. Az Interpolator meghatározza a paraméter időbeli változásának törvényét: accelerate, decelerate, bounce, overshoot. Egyéni Interpolator az @anim/interpolator_name XML erőforráson keresztül hozható létre.

Közös attribútumok

Minden Tween animáció támogatja a következő attribútumokat: duration (ms), startOffset (késleltetés indulás előtt), repeatCount, repeatMode (restart/reverse), fillEnabled, fillBefore, fillAfter, interpolator. A fillAfter attribútum határozza meg, hogy a View az animáció befejezése után a végső állapotban marad-e.

Kód példák Kotlinban

Bár az animációk általában XML-ben vannak definiálva, programozottan is létrehozhatók Kotlin segítségével. A programozott megközelítés hasznos dinamikus paraméterekhez: az átlátszóság értéke az alkalmazás állapotától függ, nem statikusan meghatározott.

kotlin
// AlphaAnimation programozott létrehozása Kotlinban
import android.view.animation.AlphaAnimation
import android.view.animation.Animation
import android.view.View

fun View.fadeOut(duration: Long = 500L, onEnd: () -> Unit = {}) {
    val animation = AlphaAnimation(1.0f, 0.0f).apply {
        this.duration = duration
        fillAfter = true
        setAnimationListener(object : Animation.AnimationListener {
            override fun onAnimationEnd(animation: Animation?) { onEnd() }
            override fun onAnimationStart(animation: Animation?) {}
            override fun onAnimationRepeat(animation: Animation?) {}
        })
    }
    startAnimation(animation)
}

// Animáció betöltése XML-ből
val bounceAnim = AnimationUtils.loadAnimation(context, R.anim.bounce)
view.startAnimation(bounceAnim)

// AnimationSet — animációk kombinációja
val set = AnimationSet(true).apply {
    addAnimation(TranslateAnimation(0f, 200f, 0f, 0f).apply { duration = 400 })
    addAnimation(RotateAnimation(0f, 360f).apply {
        duration = 400
        pivotX = view.width / 2f
        pivotY = view.height / 2f
    })
}
view.startAnimation(set)

A startAnimation() metódus hozzáadja az animációt a View megjelenítési sorához. A megszakításhoz a clearAnimation() használható. Fontos: a fillAfter=true nem változtatja meg a LayoutParams-t — a startAnimation újbóli meghívásakor az animáció a View kezdeti állapotából indul, nem az utoljára megjelenített állapotból.

Mikor használjuk a View Animation-t?

View Animation 2026-ban szűk alkalmazási körrel rendelkezik: Android 4.x (API 16-19) támogatása, ahol a Property Animation instabilan működhet; egyszerű megjelenés/eltűnés effektusok, amelyek nem igénylik a LayoutParams módosítását; olyan animációk, ahol a kattintás-eltérés nem kritikus (például háttérelemek). Minden más esetben a Google az ObjectAnimator vagy AnimatorSet használatát ajánlja.

Az Android Developers szerint a Property Animation 15-20%-kal hatékonyabb memóriahasználat szempontjából, mert nem hoz létre köztes canvas kockákat. A View Animation-ről Property Animation-re való áttérés megszünteti a kattintás-eltérés problémáját is: a View animáció után az új pozícióban fogadja az érintéseket.

Gyakran Ismételt Kérdések

Miben különbözik a View Animation a Property Animation-től?

View Animation csak a View megjelenítését változtatja — animáció után a View az eredeti pozícióban marad az érintési események számára. Property Animation megváltoztatja az objektum valós tulajdonságait, ami frissíti a LayoutParams-t és helyesen dolgozza fel a kattintásokat az új pozícióban.

Miért tekintik elavultnak a View Animation-t?

A Google az Android 3.0 (API 11) verziótól elavulttá nyilvánította a View Animation-t. Ok — kattintás-eltérés (click mismatch) és az objektumok tetszőleges tulajdonságainak animálásának képtelensége. A Property Animation megoldja ezeket a problémákat, és minden új projekthez ajánlott.

Használható a View Animation gombok animálására?

Használható, de nem ajánlott. A gomb a TranslateAnimation után az új helyen jelenik meg, de a kattintások az eredeti pozícióban működnek. Gombokhoz használja a Property Animation-t vagy az AnimatedVisibility komponenst a Jetpack Compose-ban.

Hogyan szakítható meg programozottan a View Animation?

Hívja meg a view.clearAnimation() metódust. Ha az animáció fillAfter=true paraméterrel indult, a View a végső állapotban marad. A kényszerített visszatéréshez a kezdeti állapotba hívja meg a clearAnimation() és invalidate() metódusokat.

Összefoglalás

  • View Animation — elavult Android Tween animációs rendszer négy típussal: Alpha, Translate, Scale, Rotate
  • XML meghatározás a res/anim/ mappában , , , elemekkel és gyökérrel
  • AnimationSet kombinálja az animációkat közös startOffset, duration, interpolator paraméterekkel
  • Kattintás-eltérés — a View az animáció után az eredeti pozícióban marad az érintési események számára
  • Property Animation — modern helyettesítő ObjectAnimator, AnimatorSet segítségével, valós tulajdonságokkal dolgozik
  • fillAfter a View-t a végső állapotban hagyja, de nem változtatja meg a LayoutParams-t
  • Migráció Property Animation-re megszünteti a kattintás-eltérést és 15-20%-kal javítja a teljesítményt

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is