wake-up-neo.com

Stellen Sie den Interpolator für Android-Animationen in Java ein

Dies scheint sehr einfach zu sein: Ich versuche, den Interpolator so einzustellen, dass er für eine Animation in meiner App verwendet wird. Ich muss dies im Java-Code einstellen, nicht im XML-Code (es wird sich je nach verschiedenen Dingen ändern).

Auf der Android-Website habe ich setInterpolator() gefunden. 

Ich bin mir jedoch nicht sicher, wie ich damit umgehen soll. 

Ich habe nur versucht, den Interpolar-Namen einzugeben (dh BounceIterpolator), aber dies hat nichts getan. 

Ich habe R.anim.BounceIterpolator versucht, aber Intellisense sagte anim cannot be resolved or is not a field.

Wie kann ich also den Interpolator von Java aus einstellen?

36
ACarter
setInterpolator(new BounceInterpolator());
79
Reuben Scratton
anim.setInterpolator(context, Android.R.anim.bounce_interpolator);
14
Zsolt Safrany

Update:

Android unterstützt jetzt echten Frühling und Physik in Animationen. Es ist Teil einer abwärtskompatiblen Bibliothek. Link

Für benutzerdefinierte Interpolatoren:

  1. Erstellen Sie mit awesome site eine benutzerdefinierte kubische Bezierkurve. Und die Kontrollpunkte für die Kurve erhalten.
  2. Interpolator customInterpolator = PathInterpolatorCompat.create(cpX1,cpX2,cpY1,cpY2)
  3. Fügen Sie diesen benutzerdefinierten Interpolator zu jeder Ihrer Animationen hinzu.

Ein Gist hinzugefügt. Einige mehr hier .

9
amalBit

Dank amalBit habe ich einen Interpolator mit einer PathInterpolator für eine ProgressBar in Kotlin geschrieben.

val path = Path()
path.lineTo(0.1f, 0.2f)
path.lineTo(0.7f, 0.9f)
path.lineTo(1f, 1f)
val animation = ObjectAnimator.ofInt(progress_bar, "progress", 0, 100)
animation.duration = 2000
animation.interpolator = PathInterpolatorCompat.create(path)
animation.addListener(object : Animator.AnimatorListener {
    override fun onAnimationStart(animator: Animator) {}

    override fun onAnimationEnd(animator: Animator) {
        finish()
    }

    override fun onAnimationCancel(animator: Animator) {}

    override fun onAnimationRepeat(animator: Animator) {}
})
animation.start()

Weitere Beispiele finden Sie unter https://www.programcreek.com/Java-api-examples/index.php?api=Android.view.animation.PathInterpolator .

0
CoolMind