Beschleunigungsfunktionen in Xamarin.Forms

Beispiel herunterladen Das Beispiel herunterladen

Xamarin.Forms enthält eine Easing-Klasse, mit der Sie eine Übertragungsfunktion angeben können, die steuert, wie Animationen bei der Ausführung beschleunigt oder verlangsamt werden. In diesem Artikel wird veranschaulicht, wie Sie die vordefinierten Beschleunigungsfunktionen nutzen und benutzerdefinierte Beschleunigungsfunktionen erstellen.

Die Easing -Klasse definiert eine Reihe von Beschleunigungsfunktionen, die von Animationen verwendet werden können:

  • Die BounceIn Beschleunigungsfunktion springt die Animation am Anfang.
  • Die BounceOut Beschleunigungsfunktion springt die Animation am Ende.
  • Die CubicIn Beschleunigungsfunktion beschleunigt die Animation langsam.
  • Die CubicInOut Beschleunigungsfunktion beschleunigt die Animation am Anfang und verlangsamt die Animation am Ende.
  • Die CubicOut Beschleunigungsfunktion verlangsamt die Animation schnell.
  • Die Linear Beschleunigungsfunktion verwendet eine konstante Geschwindigkeit und ist die Standardfunktion zur Beschleunigung.
  • Die SinIn Beschleunigungsfunktion beschleunigt die Animation reibungslos.
  • Die SinInOut Beschleunigungsfunktion beschleunigt die Animation am Anfang reibungslos und verlangsamt die Animation am Ende reibungslos.
  • Die SinOut Beschleunigungsfunktion verlangsamt die Animation reibungslos.
  • Die SpringIn Beschleunigungsfunktion bewirkt, dass die Animation sehr schnell gegen Ende beschleunigt wird.
  • Die SpringOut Beschleunigungsfunktion bewirkt, dass die Animation gegen Ende schnell verlangsamt wird.

Die In Suffixe und Out geben an, ob der von der Beschleunigungsfunktion bereitgestellte Effekt am Anfang der Animation, am Ende oder beidem spürbar ist.

Darüber hinaus können benutzerdefinierte Beschleunigungsfunktionen erstellt werden. Weitere Informationen finden Sie unter Benutzerdefinierte Beschleunigungsfunktionen.

Verwenden einer Beschleunigungsfunktion

Die Animationserweiterungsmethoden in der ViewExtensions -Klasse ermöglichen es, eine Beschleunigungsfunktion als endgültigen Methodenparameter anzugeben, wie im folgenden Codebeispiel veranschaulicht:

await image.TranslateTo(0, 200, 2000, Easing.BounceIn);
await image.ScaleTo(2, 2000, Easing.CubicIn);
await image.RotateTo(360, 2000, Easing.SinInOut);
await image.ScaleTo(1, 2000, Easing.CubicOut);
await image.TranslateTo(0, -200, 2000, Easing.BounceOut);

Durch Angeben einer Beschleunigungsfunktion für eine Animation wird die Animationsgeschwindigkeit nichtlinear und erzeugt den Effekt, der von der Beschleunigungsfunktion bereitgestellt wird. Wenn Sie beim Erstellen einer Animation eine Beschleunigungsfunktion weglassen, verwendet die Animation die Standardmäßige Linear Beschleunigungsfunktion, die eine lineare Geschwindigkeit erzeugt.

Hinweis

Xamarin.Forms 5.0 enthält einen Typkonverter, der eine Zeichenfolgendarstellung einer Beschleunigungsfunktion in den entsprechenden Easing Enumerationsmember konvertiert. Dieser Typkonverter wird automatisch für alle Eigenschaften des Typs Easing aufgerufen, die in XAML festgelegt sind.

Weitere Informationen zur Verwendung der Animationserweiterungsmethoden in der ViewExtensions -Klasse finden Sie unter Einfache Animationen. Beschleunigungsfunktionen können auch von der Animation -Klasse genutzt werden. Weitere Informationen finden Sie unter Benutzerdefinierte Animationen.

Benutzerdefinierte Beschleunigungsfunktionen

Es gibt drei Standard Ansätze zum Erstellen einer benutzerdefinierten Beschleunigungsfunktion:

  1. Erstellen Sie eine Methode, die ein double Argument akzeptiert und ein double Ergebnis zurückgibt.
  2. Erstellen Sie eine Func<double, double>.
  3. Geben Sie die Beschleunigungsfunktion als Argument für den Easing Konstruktor an.

In allen drei Fällen sollte die benutzerdefinierte Beschleunigungsfunktion 0 für ein Argument von 0 und 1 für ein Argument von 1 zurückgeben. Es kann jedoch jeder Wert zwischen den Argumentwerten 0 und 1 zurückgegeben werden. Jeder Ansatz wird nun nacheinander besprochen.

Benutzerdefinierte Easing-Methode

Eine benutzerdefinierte Beschleunigungsfunktion kann als Methode definiert werden, die ein double Argument akzeptiert und ein double Ergebnis zurückgibt, wie im folgenden Codebeispiel veranschaulicht:

double CustomEase (double t)
{
  return t == 0 || t == 1 ? t : (int)(5 * t) / 5.0;
}

await image.TranslateTo(0, 200, 2000, (Easing)CustomEase);

Die CustomEase -Methode schneidet den eingehenden Wert auf die Werte 0, 0,2, 0,4, 0,6, 0,8 und 1 ab. Daher wird die Image instance in diskreten Sprüngen übersetzt, anstatt reibungslos.

Benutzerdefinierter Beschleunigungs-Func

Eine benutzerdefinierte Beschleunigungsfunktion kann auch als Func<double, double>definiert werden, wie im folgenden Codebeispiel veranschaulicht:

Func<double, double> CustomEaseFunc = t => 9 * t * t * t - 13.5 * t * t + 5.5 * t;
await image.TranslateTo(0, 200, 2000, CustomEaseFunc);

CustomEaseFunc stellt eine Beschleunigungsfunktion dar, die schnell startet, den Kurs verlangsamt und umgekehrt und dann den Kurs wieder umkehrt, um schnell gegen Ende zu beschleunigen. Während die Gesamtbewegung des Image instance also nach unten geht, kehrt er vorübergehend den Kurs in der Mitte der Animation um.

Benutzerdefinierter Beschleunigungskonstruktor

Eine benutzerdefinierte Beschleunigungsfunktion kann auch als Argument für den Easing Konstruktor definiert werden, wie im folgenden Codebeispiel veranschaulicht:

await image.TranslateTo (0, 200, 2000, new Easing (t => 1 - Math.Cos (10 * Math.PI * t) * Math.Exp (-5 * t)));

Die benutzerdefinierte Beschleunigungsfunktion wird als Lambdafunktionsargument für den Easing Konstruktor angegeben und verwendet die Math.Cos -Methode, um einen Langsam-Drop-Effekt zu erzeugen, der durch die Math.Exp -Methode gedämpft wird. Daher wird die Image instance übersetzt, sodass sie an ihren letzten Ruheplatz fallen scheint.

Zusammenfassung

In diesem Artikel wurde veranschaulicht, wie Sie die vordefinierten Beschleunigungsfunktionen nutzen und benutzerdefinierte Beschleunigungsfunktionen erstellen. Xamarin.Forms enthält eine Easing -Klasse, mit der Sie eine Übertragungsfunktion angeben können, die steuert, wie Animationen bei der Ausführung beschleunigt oder verlangsamt werden.