View Animation — vad är det, Tween Animation i Android

Författare: IT Sectr Publicerad: 2026-03-01 Lästid: 8 min

View Animation — ett föråldrat animationssystem för Android API 1+ som arbetar med View-objekt via Tween Animation (Alpha, Translate, Scale, Rotate). Google rekommenderar Property Animation (Animator) för alla nya projekt. Artikeln förklarar principer, typer, XML-konfiguration och orsaker till avskaffande.

Huvudpunkter

  • View Animation — View-animation via Tween Animation: Alpha, Translate, Scale, Rotate
  • XML-definition — animationer beskrivs i res/anim/ med , , ,
  • AnimationSet — kombination av flera animationer i en uppsättning med gemensamma parametrar
  • Begränsning — View Animation ändrar inte egenskaper, endast rendering: View förblir på ursprungspositionen
  • Property Animation — modern ersättning (Animator) som arbetar med verkliga egenskaper hos objekt

Vad är View Animation?

View Animation — Android-animationsundersystemet som arbetar på View-nivå (API 1+). Det använder fyra typer av Tween Animation: AlphaAnimation (genomskinlighet), TranslateAnimation (förflyttning), ScaleAnimation (skala) och RotateAnimation (rotation). Varje animation beskrivs i en XML-fil i mappen res/anim/ eller skapas programmatiskt i Kotlin-kod.

View Animation-mekanismen ändrar inte View: s verkliga egenskaper — den ritar om View i ny position, skala eller genomskinlighet, men återanropet onTouchEvent() tar emot koordinater för den ursprungliga platsen. Detta är den viktigaste begränsningen, känd som klickfelaktighet (click mismatch).

Enligt Android Developer Documentation (2026) markerar Google View Animation som föråldrat API från och med Android 3.0 (API 11). För nya projekt rekommenderas Property Animation — Animator, AnimatorSet och ObjectAnimator, som arbetar med verkliga egenskaper hos objekt via setter-metoder.

Typer av Tween Animation

Tween Animation — animation “mellan” nyckelbildrutor: du anger start- och sluttillstånd och systemet beräknar mellanliggande bildrutor. Android erbjuder fyra standardtyper, var och en med sin egen uppsättning parametrar.

AlphaAnimation

AlphaAnimation ändrar View: s genomskinlighet från fromAlpha till toAlpha. Värden från 0.0 (helt genomskinligt) till 1.0 (helt synligt). Som standard varar animationen 300 ms. Parametern fillAfter=true lämnar View i sluttillståndet för genomskinlighet.

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 flyttar View från startpositionen (fromXDelta, fromYDelta) till slutpositionen (toXDelta, toYDelta). Värden anges i pixlar, procentandelar av föräldern eller procentandelar av själva View. Till exempel betyder 100% 100% av View: s bredd.

ScaleAnimation

ScaleAnimation skalar View i förhållande till punkten pivotX/pivotY. fromXScale=1.0, toXScale=2.0 fördubblar bredden. Parametern pivotType bestämmer i förhållande till vad pivot beräknas: self, parent eller absolute. Skalningsanimation ändrar inte View: s verkliga dimensioner — endast rendering.

RotateAnimation

RotateAnimation roterar View runt punkten pivot med en vinkel från fromDegrees till toDegrees. Vinkeln mäts i grader: 0 — startposition, 360 — full rotation. För oändlig rotation, använd repeatCount=INFINITE.

View Animation vs Property Animation

Skillnaden mellan View Animation och Property Animation (Animator) — en fundamental skillnad i Android-animationsarkitekturen. View Animation arbetar endast på rendering, Property Animation ändrar objektets verkliga egenskaper via setter-metoder, vilket leder till uppdatering av layouten.

KriteriumView AnimationProperty Animation
API-nivåAPI 1+ (föråldrat)API 11+ (rekommenderat)
Vad animerarView-rendering (canvas)Objektsegenskape (setter)
Klick efter animationPå ursprungspositionenPå ny position
Animationstyper4 Tween + AnimationSetObjectAnimator, ValueAnimator, AnimatorSet
LayoutParamsÄndrar inteÄndrar via setLayoutParams
PrestandaHög (endast canvas)Medel (beroende på setter)

XML-konfiguration av animationer

View Animation definieras vanligtvis i XML-filer i res/anim/ med rotelementet (AnimationSet) eller en av de fyra typerna. AnimationSet gör det möjligt att kombinera animationer med gemensamma parametrar startOffset, duration, interpolator.

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>

XML-filen laddas via AnimationUtils.loadAnimation(). Interpolator bestämmer lagen för parameterändring över tid: accelerate, decelerate, bounce, overshoot. Anpassad Interpolator skapas via XML-resursen @anim/interpolator_name.

Gemensamma attribut

Alla Tween-animationer stöder attribut: duration (ms), startOffset (fördröjning före start), repeatCount, repeatMode (restart/reverse), fillEnabled, fillBefore, fillAfter, interpolator. Attributet fillAfter bestämmer om View förblir i animationens sluttillstånd efter slutförande.

Kodexempel i Kotlin

Även om animationer vanligtvis definieras i XML kan de också skapas programmatiskt via Kotlin. Det programmatiska tillvägagångssättet är användbart för dynamiska parametrar: genomskinlighetsvärdet beror på appens tillstånd, inte statiskt bestämt.

kotlin
// Programmatisk skapelse av AlphaAnimation i Kotlin
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)
}

// Ladda animation från XML
val bounceAnim = AnimationUtils.loadAnimation(context, R.anim.bounce)
view.startAnimation(bounceAnim)

// AnimationSet — kombination av animationer
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)

Metoden startAnimation() lägger till animationen i View: s renderingskö. För annullering används clearAnimation(). Viktigt: fillAfter=true ändrar inte LayoutParams — när startAnimation anropas igen börjar animationen från View: s ursprungstillstånd, inte från det senast renderade tillståndet.

När ska View Animation användas?

View Animation har ett snävt tillämpningsområde 2026: stöd för Android 4.x (API 16-19), där Property Animation kan fungera instabilt; enkla visas/försvinner-effekter som inte kräver ändring av LayoutParams; animationer där klickfelaktighet inte är kritisk (till exempel bakgrundselement). För alla andra fall rekommenderar Google övergång till ObjectAnimator eller AnimatorSet.

Enligt Android Developers är Property Animation 15-20% effektivare i minnesanvändning eftersom den inte skapar mellanliggande canvas-bildrutor. Övergång från View Animation till Property Animation eliminerar också problemet med klickfelaktighet: View efter animation tar emot beröringar på den nya positionen.

Vanliga frågor

Vad skiljer View Animation från Property Animation?

View Animation ändrar endast View: s rendering — efter animation förblir View på ursprungspositionen för beröringshändelser. Property Animation ändrar objektets verkliga egenskaper, vilket uppdaterar LayoutParams och korrekt bearbetar klick på den nya positionen.

Varför anses View Animation vara föråldrat?

Google förklarade View Animation föråldrat från Android 3.0 (API 11). Anledning — klickfelaktighet (click mismatch) och oförmåga att animera godtyckliga egenskaper hos objekt. Property Animation löser dessa problem och rekommenderas för alla nya projekt.

Kan View Animation användas för animering av knappar?

Det kan användas men rekommenderas inte. Knappen efter TranslateAnimation visas på den nya platsen, men klick fungerar på ursprungspositionen. För knappar, använd Property Animation eller komponenten med AnimatedVisibility i Jetpack Compose.

Hur avbryter man View Animation programmatiskt?

Anropa view.clearAnimation(). Om animationen startades med fillAfter=true kommer View att förbli i sluttillståndet. För tvångsåtergång till ursprungstillståndet, anropa clearAnimation() och invalidate().

Sammanfattning

  • View Animation — föråldrat Android Tween-animationssystem med fyra typer: Alpha, Translate, Scale, Rotate
  • XML-definition i res/anim/ med element , , , och rot
  • AnimationSet kombinerar animationer med gemensam startOffset, duration, interpolator
  • Klickfelaktighet — View förblir efter animation på ursprungspositionen för beröringshändelser
  • Property Animation — modern ersättning via ObjectAnimator, AnimatorSet, som arbetar med verkliga egenskaper
  • fillAfter lämnar View i sluttillståndet men ändrar inte LayoutParams
  • Migrering till Property Animation eliminerar klickfelaktighet och förbättrar prestanda med 15-20%

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också