Interpolator — was ist das, Interpolationskurven in Android

Autor: IT Sectr Veröffentlicht: 2026-03-02 Lesezeit: 8 Min.
Interpolator — eine Komponente des Android Animation Framework, die die mathematische Kurve der Animationswertänderung im Zeitverlauf definiert. Anstelle einer linearen Bewegung (ein Objekt bewegt sich mit konstanter Geschwindigkeit) ermöglicht Interpolator, die Animation zu beschleunigen, zu verlangsamen oder zyklisch zu ändern und so natürliches Verhalten zu erzeugen. Android bietet 9 integrierte Interpolatoren: AccelerateInterpolator, DecelerateInterpolator, AccelerateDecelerateInterpolator, AnticipateInterpolator, OvershootInterpolator, BounceInterpolator, CycleInterpolator, LinearInterpolator und PathInterpolator. Laut Android Developer Documentation reduziert die Verwendung nichtlinearer Interpolatoren die wahrgenommene Animationszeit um 25–40% — der Benutzer empfindet die Reaktion als flüssiger und reaktionsschneller. Bei IT Sectr verwenden wir AccelerateDecelerateInterpolator für das Einblenden von Elementen und OvershootInterpolator für Aktionsschaltflächen.

Wichtige Erkenntnisse

  • Interpolator — eine mathematische Funktion, die den linearen Animationsfortschritt (0→1) in eine nichtlineare Geschwindigkeitskurve umwandelt.
  • 9 integrierte Interpolatoren in Android: von Linear bis Bounce — decken 90% der typischen Animationsszenarien ab.
  • PathInterpolator (API 21+) ermöglicht die Angabe einer beliebigen Bezier-Kurve mit zwei Kontrollpunkten.
  • TimeInterpolator — ein Interface zum Erstellen benutzerdefinierter Interpolatoren mit der Methode getInterpolation().
  • AccelerateDecelerateInterpolator — eine symmetrische Kurve: Beschleunigung am Anfang, Verzögerung am Ende, die universellste Wahl.

Was ist Interpolator?

Interpolator — ein Interface in Android, das den Bruchteilswert des Animationsfortschritts (von 0.0 bis 1.0) auf einen tatsächlichen Wert mit modifizierter Geschwindigkeit abbildet. Wenn eine Animation 300 Millisekunden dauert, ruft das System für jeden Frame den Interpolator auf und übergibt den aktuellen Fortschritt. Der Interpolator gibt einen modifizierten Wert zurück — zum Beispiel durchläuft die Animation mit AccelerateInterpolator bei 50% der Zeit nur etwa 25% des Pfades und simuliert so eine Beschleunigung.

Mathematisch kann Interpolator als Funktion f(t) dargestellt werden, wobei t die normalisierte Zeit [0, 1] und f(t) der normalisierte Wert [0, 1] (oder breiter für Overshoot/Bounce) ist. LinearInterpolator gibt f(t) = t zurück — das Objekt bewegt sich mit konstanter Geschwindigkeit. AccelerateInterpolator approximiert f(t) = t², DecelerateInterpolator approximiert f(t) = 1 − (1 − t)², was einen sanften Start oder Abschluss erzeugt. Im Android Animation Framework wird Interpolator sowohl auf ValueAnimator als auch auf ObjectAnimator und ViewPropertyAnimator angewendet und bietet einen einheitlichen Ansatz zur Geschwindigkeitssteuerung auf allen Ebenen.

Integrierte Android-Interpolatoren

Android bietet 9 integrierte Interpolatoren, jeder mit seinem eigenen mathematischen Modell. Die Wahl des Interpolators bestimmt den Charakter der Animation: Physikalität (Bounce), Elastizität (Overshoot) oder Glätte (AccelerateDecelerate).

Interpolator Mathematik Anwendungsfall
LinearInterpolator f(t) = t Fortschrittsanzeigen, Lauftext
AccelerateInterpolator f(t) = tⁿ (n=2) Element fliegt aus dem Bildschirm, erscheint von unten
DecelerateInterpolator f(t) = 1 − (1 − t)ⁿ Fallendes Objekt, Eintritt von oben mit Verzögerung
AccelerateDecelerateInterpolator Cos-Approximation Universell, Ein-/Ausblenden von Elementen
AnticipateInterpolator Kubisch mit Rückzug Federnder Eintritt — Objekt fährt vor Start etwas zurück
OvershootInterpolator Kubisch mit Überschwingen Aktionstaste — überschwingt leicht die Zielposition
AnticipateOvershootInterpolator Kombination aus Anticipate + Overshoot Karten — Rückzug + Überschwingen mit Rückkehr
BounceInterpolator Gedämpfte Stöße Ball, auf eine Oberfläche fallendes Element
PathInterpolator Kubische Bezier (2 Kontrollpunkte) Benutzerdefinierte Kurven für Designsystem

Jeder Interpolator hat eine XML-Deklaration in res/interpolator/ und eine Kotlin-Klasse im Paket android.view.animation. AccelerateDecelerateInterpolator wird am häufigsten verwendet: seine Kurve ähnelt der Easing-Funktion ease-in-out in CSS. Für Android-Apps mit Material Design wird OvershootInterpolator für Floating Action Buttons (FAB) empfohlen — er erzeugt einen Hüpfeffekt beim Erscheinen.

PathInterpolator: benutzerdefinierte Kurven

PathInterpolator — ein auf einer Bezier-Kurve basierender Interpolator, der über ein Path-Objekt definiert wird. Verfügbar ab API 21 (Android 5.0). Ermöglicht das visuelle Entwerfen der Geschwindigkeitskurve — der Designer zeichnet die Kurve, der Entwickler überträgt sie über Kontrollpunktkoordinaten in Code. Es wird nur kubische Bezier unterstützt (zwei Kontrollpunkte C1, C2).

Die PathInterpolator-Kurve beginnt immer am Punkt (0,0) und endet bei (1,1). Kontrollpunkte definieren die Form: (x1, y1) — der Startpunkt, (x2, y2) — der Endpunkt. x-Werte müssen im Bereich [0,1] liegen — dies garantiert Monotonie über die Zeit. y-Werte können [0,1] überschreiten — dies erzeugt einen Overshoot- oder Anticipate-Effekt. Zum Beispiel verwendet das standardmäßige Material Design die fast-out-slow-in-Kurve mit Kontrollpunkten (0.4, 0.0, 0.2, 1.0). Bei IT Sectr erstellen wir benutzerdefinierte PathInterpolators für jedes Designsystem — dies gewährleistet konsistente Animationen auf allen Bildschirmen.

Erstellen eines eigenen Interpolators

Wenn integrierte Interpolatoren Ihr Szenario nicht abdecken, ermöglicht Android die Erstellung eines benutzerdefinierten durch Implementierung des TimeInterpolator-Interfaces. Die einzige Methode ist getInterpolation(input: Float): Float. Input ist der aktuelle Animationsfortschritt von 0 bis 1; output ist der modifizierte Wert. Output kann für Overshoot- oder Bounce-Effekte über [0,1] hinausgehen.

Typische benutzerdefinierte Interpolatoren: gedämpfter Bounce-Effekt (über 1.0 hinausgehen und zurückkehren), elastischer Effekt (sinusförmige Dämpfung), Step-Interpolator (diskrete Sprünge). Benutzerdefinierte Interpolatoren können auch über XML mit dem Tag <interpolator> und Angabe der Klasse definiert werden. Android Studio hat eine integrierte Interpolator-Vorschau im Layout Inspector — sie zeigt die tatsächliche Kurve für den ausgewählten Interpolator an und vereinfacht so die Fehlersuche.

Codebeispiele in Kotlin

Beispiel 1: AccelerateDecelerateInterpolator mit ValueAnimator

Basisanimation für Schaltflächenskalierung mit einem symmetrischen Interpolator. ValueAnimator ändert den Wert von 1.0 auf 1.2 und zurück, und AccelerateDecelerateInterpolator sorgt für eine flüssige Bewegung.

kotlin
import android.animation.ValueAnimator
import android.view.animation.AccelerateDecelerateInterpolator
import android.view.View

fun View.pulseAnimation() {
    ValueAnimator.ofFloat(1.0f, 1.2f).apply {
        duration = 300
        interpolator = AccelerateDecelerateInterpolator()
        repeatCount = 1
        repeatMode = ValueAnimator.REVERSE

        addUpdateListener { animator ->
            val scale = animator.animatedValue as Float
            this@pulseAnimation.scaleX = scale
            this@pulseAnimation.scaleY = scale
        }

        start()
    }
}

AccelerateDecelerateInterpolator erzeugt eine sanfte Beschleunigung zu Beginn und eine sanfte Verzögerung am Ende. Der REVERSE-Modus wiederholt die Animation in die entgegengesetzte Richtung und erzeugt einen Pulseeffekt. Dieses Muster wird für Aktionsschaltflächen verwendet, um die Aufmerksamkeit des Benutzers auf ein wichtiges Oberflächenelement zu lenken.

Beispiel 2: PathInterpolator mit benutzerdefinierter Kurve

Benutzerdefinierte Kurve mit Overshoot-Effekt — das Objekt überschwingt die Zielposition um 10% und kehrt zurück. Die Kontrollpunkte (0.4, 0.0, 0.6, 1.3) definieren einen beschleunigten Eintritt mit Überschwingen.

kotlin
import android.animation.ObjectAnimator
import android.graphics.Path
import android.view.animation.PathInterpolator
import android.view.View

fun View.slideWithOvershoot() {
    val path = Path().apply {
        cubicTo(0.4f, 0.0f, 0.6f, 1.3f, 1.0f, 1.0f)
    }
    val interpolator = PathInterpolator(path)

    ObjectAnimator.ofFloat(this, "translationY", 200f, 0f).apply {
        duration = 400
        interpolator = interpolator
        start()
    }
}

PathInterpolator akzeptiert einen Path mit einer kubischen Bezier-Kurve. Im Beispiel überschwingt das Element die Zielposition (y=1.3 bei 60% der Zeit) und kehrt zur Endposition zurück. Der Path muss entlang der x-Achse streng monoton sein, sonst läuft die Animation rückwärts. Zur Überprüfung verwenden Sie den Layout Inspector in Android Studio.

Beispiel 3: Benutzerdefinierter BounceInterpolator

Benutzerdefinierter Interpolator mit gedämpftem Bounce-Effekt. Implementierung über TimeInterpolator mit vier Dämpfungszyklen.

kotlin
import android.animation.TimeInterpolator

class DampedBounceInterpolator : TimeInterpolator {

    private val cycles = 4
    private val damping = 0.85f

    override fun getInterpolation(input: Float): Float {
        val t = input * cycles
        val decay = Math.pow(damping.toDouble(), cycles.toDouble()).toFloat()
        val peak = t - (Math.floor(t.toDouble())).toFloat()
        val bounce = Math.sin(peak * Math.PI).toFloat()
        return 1f - bounce * decay * (1f - input)
    }
}

Der benutzerdefinierte DampedBounceInterpolator erzeugt 4 gedämpfte Stöße mit einem Dämpfungsfaktor von 0.85. Die Methode getInterpolation nimmt einen linearen Input entgegen und gibt einen Wert mit Federeffekt zurück. Bei IT Sectr verwenden wir diesen Interpolator für die Einblendanimation von Benachrichtigungen — der Stoß erzeugt ein Gefühl von Physikalität und lenkt die Aufmerksamkeit.

Häufig gestellte Fragen

Wie unterscheidet sich AccelerateDecelerateInterpolator von PathInterpolator?

AccelerateDecelerateInterpolator erzeugt eine symmetrische Kurve — das Objekt beschleunigt zu Beginn und verlangsamt am Ende. PathInterpolator ermöglicht die Angabe einer beliebigen Kurve über Path mit einem Kontrollpunkt (kubische Bezier). Für benutzerdefinierte Animationen mit asymmetrischem Verhalten (z. B. schneller Start + langsames Ende) verwenden Sie PathInterpolator mit Kontrollpunkten (0.2, 0.8, 0.4, 1.0).

Kann ich in Android einen eigenen Interpolator erstellen?

Ja, implementieren Sie das TimeInterpolator-Interface und überschreiben Sie die Methode getInterpolation(input: Float): Float. Input ist ein Bruchwert von 0 bis 1 (Animationsfortschritt), output ist der tatsächliche Wert. Ein Bounce-Effekt wird beispielsweise durch die Rückgabe von Werten größer als 1 oder kleiner als 0 für ein federartiges Verhalten implementiert. Registrieren Sie den Interpolator über das XML-Tag oder verwenden Sie ihn direkt im Code.

Ist PathInterpolator auf allen Android-Versionen verfügbar?

PathInterpolator wurde mit API 21 (Android 5.0 Lollipop) eingeführt. Verwenden Sie für ältere Versionen AccelerateDecelerateInterpolator oder einen benutzerdefinierten TimeInterpolator. PathInterpolator unterstützt nur kubische Bezier-Kurven mit zwei Kontrollpunkten — gerade Linien und quadratische Kurven können zu falscher Interpolation führen. Verwenden Sie aus Gründen der Abwärtskompatibilität AccelerateDecelerateInterpolator als Fallback.

Welchen Interpolator empfiehlt Material Design?

Material Design 3 empfiehlt die fast-out-slow-in-Kurve mit Kontrollpunkten (0.4, 0.0, 0.2, 1.0) für das Einblenden von Elementen, linear-out-slow-in (0.0, 0.0, 0.2, 1.0) für das Ausblenden und fast-out-linear-in (0.4, 0.0, 1.0, 1.0) für Bewegung. In Android sind diese Kurven in der Klasse FastOutSlowInInterpolator aus der Material Components Bibliothek implementiert.

Beeinflusst der Interpolator die Animationsleistung?

Minimal. Integrierte Interpolatoren führen eine mathematische Operation pro Frame aus — der Overhead ist vernachlässigbar. Benutzerdefinierte Interpolatoren mit aufwändigen Berechnungen (Trigonometrie, Schleifen) können auf schwachen Geräten zu Mikrorucklern führen. Optimieren Sie durch Vorausberechnung von Werten im Konstruktor oder verwenden Sie TimeInterpolator mit Caching.

Zusammenfassung

  • Interpolator — eine mathematische Funktion, die den linearen Animationsfortschritt in eine nichtlineare Geschwindigkeitskurve umwandelt und Bewegungen natürlich macht.
  • 9 integrierte Android-Interpolatoren decken 90% der Szenarien ab — von linearer Bewegung bis zu physikalischen Stößen.
  • PathInterpolator (API 21+) definiert eine benutzerdefinierte Bezier-Kurve mit zwei Kontrollpunkten für präzise Animationssteuerung.
  • TimeInterpolator — ein Interface zum Erstellen benutzerdefinierter Interpolatoren mit beliebiger Mathematik.
  • Material Design empfiehlt fast-out-slow-in für das Einblenden und linear-out-slow-in für das Ausblenden von Elementen.
  • AccelerateDecelerateInterpolator — eine universelle Wahl für symmetrische Animationen mit sanftem Start und Ende.
  • Benutzerdefinierte Interpolatoren mit gedämpften Stößen erzeugen physikalisches Verhalten für Benachrichtigungen und interaktive Elemente.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch