Bei ziehbasierten Animationen wird eine Reibungskraft verwendet, die proportional zu einer die Geschwindigkeit des Objekts. Sie können damit eine Eigenschaft eines Objekts animieren und , um die Animation allmählich zu beenden. Sie hat einen ersten Impuls, meist von der Geschwindigkeit der Gesten empfangen, und verlangsamt sich allmählich. Die endet, wenn die Geschwindigkeit der Animation niedrig genug ist. dass keine Änderung auf dem Gerätebildschirm sichtbar ist.
<ph type="x-smartling-placeholder">![](https://developer.android.com/static/images/guide/topics/graphics/fling-animation.gif?authuser=9&hl=de)
Weitere Informationen zu verwandten Themen finden Sie in den folgenden Leitfäden:
AndroidX-Bibliothek hinzufügen
Wenn Sie die physikbasierten Animationen verwenden möchten, müssen Sie Ihrem Projekt die AndroidX-Bibliothek hinzufügen wie folgt:
- Öffnen Sie die Datei
build.gradle
für Ihr App-Modul. - Füge dem Abschnitt
dependencies
die AndroidX-Bibliothek hinzu.Cool
dependencies { implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0' }
Kotlin
dependencies { implementation("androidx.dynamicanimation:dynamicanimation:1.0.0") }
Fling-Animation erstellen
Mit der Klasse FlingAnimation
können Sie
Fling-Animation für ein Objekt. Um eine Fling-Animation zu erstellen, erstellen Sie einen
Instanz der FlingAnimation
-Klasse und
ein Objekt und die zugehörige Eigenschaft des Objekts angeben, das animiert werden soll.
Kotlin
val fling = FlingAnimation(view, DynamicAnimation.SCROLL_X)
Java
FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X);
Geschwindigkeit einstellen
Die Startgeschwindigkeit definiert die Geschwindigkeit, mit der eine Animationseigenschaft sich am Anfang der Animation ändert. Die Standardstartgeschwindigkeit ist auf null Pixel pro Sekunde eingestellt. Daher müssen Sie eine Startgeschwindigkeit damit die Animation nicht sofort endet.
Sie können einen festen Wert als Startgeschwindigkeit verwenden oder der Geschwindigkeit einer Berührung. Wenn Sie einen festen Wert angeben, definieren Sie den Wert in dp pro Sekunde und konvertieren ihn in Pixel. pro Sekunde. Wenn der Wert in dp pro Sekunde definiert wird, kann die Geschwindigkeit unabhängig von der Dichte und den Formfaktoren eines Geräts. Weitere Informationen zu die Startgeschwindigkeit in Pixel pro Sekunde umwandeln, Wird konvertiert „dp pro Sekunde“ zu „Pixel pro Sekunde“ in der Abbildung Spring Animation.
Rufen Sie zum Festlegen der Geschwindigkeit die Methode setStartVelocity()
auf und übergeben Sie
die Geschwindigkeit in Pixeln pro Sekunde. Die -Methode gibt das
in dem die Geschwindigkeit eingestellt ist.
Hinweis: Verwenden Sie die Methode
GestureDetector.OnGestureListener
und die
VelocityTracker
-Klassen zum Abrufen und Berechnen
die Geschwindigkeit der Berührungsgesten.
Wertebereich für Animation festlegen
Sie können die minimalen und maximalen Animationswerte festlegen, den Eigenschaftswert auf einen bestimmten Bereich beschränken. Diese Bereichssteuerung ist besonders nützlich, wenn Sie Eigenschaften animieren, deren zum Beispiel Alpha (von 0 bis 1).
Hinweis: Wenn der Wert einer Fling-Animation den Wert Mindest- oder Höchstwert hat, endet die Animation.
Rufen Sie zum Festlegen der Mindest- und Höchstwerte die setMinValue()
auf.
bzw. setMaxValue()
.
Beide Methoden geben das Animationsobjekt zurück, für das Sie den Wert festgelegt haben.
Reibung festlegen
Mit der Methode setFriction()
können Sie
und Reibungspunkte zu schaffen. Sie definiert, wie schnell die Geschwindigkeit in einer Animation abnimmt.
Hinweis: Wenn Sie die Hürde nicht am Anfang des der Animation einen Standardwert von 1 für die Reibung.
Die Methode gibt das Objekt zurück, dessen Animation den Reibungswert verwendet, den Sie bereitstellen.
Beispielcode
Das folgende Beispiel zeigt ein horizontales Fling. Die Geschwindigkeit, die von der
lautet der Geschwindigkeits-Tracker velocityX
und die Scroll-Grenzen sind
auf 0 festgelegt und
maxScroll. Die Hürde ist auf 1,1 festgelegt.
Kotlin
FlingAnimation(view, DynamicAnimation.SCROLL_X).apply { setStartVelocity(-velocityX) setMinValue(0f) setMaxValue(maxScroll) friction = 1.1f start() }
Java
FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X); fling.setStartVelocity(-velocityX) .setMinValue(0) .setMaxValue(maxScroll) .setFriction(1.1f) .start();
Mindestwert für sichtbare Änderung festlegen
Wenn Sie eine benutzerdefinierte Eigenschaft animieren, die nicht in Pixeln definiert ist, sollten Sie Eine minimale Änderung des Animationswerts, der für die Nutzer sichtbar ist. Es legt einen angemessenen Schwellenwert für das Beenden der Animation fest.
Es ist nicht notwendig, diese Methode bei Animationen
DynamicAnimation.ViewProperty
, weil der
die minimale sichtbare Änderung aus der Property abgeleitet wird. Beispiel:
- Der Standardwert für die minimale sichtbare Änderung beträgt 1 Pixel für die Ansicht
Attribute wie
TRANSLATION_X
,TRANSLATION_Y
,TRANSLATION_Z
,SCROLL_X
undSCROLL_Y
- Für Animationen mit Rotation wie
ROTATION
ROTATION_X
undROTATION_Y
(mindestens sichtbar) ÄnderungMIN_VISIBLE_CHANGE_ROTATION_DEGREES
oder 1/10 Pixel ist. - Bei Animationen mit Deckkraft ist die minimale Sichtbarkeitsänderung
MIN_VISIBLE_CHANGE_ALPHA
bzw. 1/256.
Um die minimale sichtbare Änderung für eine Animation festzulegen, rufen Sie die Methode
setMinimumVisibleChange()
und übergeben Sie entweder
eine der minimalen sichtbaren Konstanten oder ein Wert, der berechnet werden muss
für eine benutzerdefinierte Eigenschaft. Weitere Informationen zur Berechnung dieses Werts
finden Sie in der
Mindestwert für sichtbare Änderungen berechnen
.
Kotlin
anim.minimumVisibleChange = DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE
Java
anim.setMinimumVisibleChange(DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE);
Hinweis: Sie müssen nur dann einen Wert übergeben, wenn Sie ein benutzerdefinierte Eigenschaft, die nicht in Pixeln definiert ist.
Mindestwert für sichtbare Änderung berechnen
Um den minimalen Wert für die sichtbare Änderung für eine benutzerdefinierte Eigenschaft zu berechnen, verwenden Sie die Methode folgende Formel:
Minimale sichtbare Änderung = Bereich des Werts der benutzerdefinierten Eigenschaft ÷ Bereich von Animation in Pixeln
Beispielsweise geht die Eigenschaft, die Sie animieren möchten, von 0 bis 100. Das entspricht einer Veränderung um 200 Pixel. Gemäß der Formel ist das Minimum Der Wert der sichtbaren Änderung beträgt 100 / 200 entspricht 0,5 Pixeln.