Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Xamarin.Forms Zawiera klasę Easing, która umożliwia określenie funkcji transferu, która kontroluje szybkość lub spowolnienie animacji podczas ich uruchamiania. W tym artykule pokazano, jak korzystać ze wstępnie zdefiniowanych funkcji ułatwiania i jak tworzyć niestandardowe funkcje złagodzenia.
Klasa Easing definiuje szereg funkcji złagodzenia, które mogą być używane przez animacje:
- Funkcja
BounceInzłagodzenia odbija animację na początku. - Funkcja
BounceOutzłagodzenia odbija animację na końcu. - Funkcja
CubicInzłagodzenia powoli przyspiesza animację. - Funkcja
CubicInOutzłagodzenia przyspiesza animację na początku i zwalnia animację na końcu. - Funkcja
CubicOutzłagodzenia szybko zwalnia animację. - Funkcja
Linearzłagodzenia używa stałej prędkości i jest domyślną funkcją złagodzenia. - Funkcja
SinInzłagodzenia płynnie przyspiesza animację. - Funkcja
SinInOutzłagodzenia płynnie przyspiesza animację na początku i płynnie zwalnia animację na końcu. - Funkcja
SinOutzłagodzenia płynnie zwalnia animację. - Funkcja złagodzenia powoduje, że animacja
SpringInbardzo szybko przyspiesza w kierunku końca. - Funkcja złagodzenia powoduje, że animacja
SpringOutszybko zwalnia się na końcu.
Sufiksy In i Out wskazują, czy efekt zapewniany przez funkcję złagodzenia jest zauważalny na początku animacji, na końcu lub na obu.
Ponadto można tworzyć niestandardowe funkcje luzowania. Aby uzyskać więcej informacji, zobacz Custom Easing Functions (Niestandardowe funkcje easing).
Korzystanie z funkcji easing
Metody rozszerzenia animacji w ViewExtensions klasie umożliwiają określenie funkcji złagodzenia jako końcowego parametru metody, jak pokazano w poniższym przykładzie kodu:
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);
Określając funkcję złagodzenia animacji, szybkość animacji staje się nieliniowa i daje efekt zapewniany przez funkcję złagodzenia. Pominięcie funkcji złagodzenia podczas tworzenia animacji powoduje, że animacja używa domyślnej Linear funkcji złagodzenia, która generuje szybkość liniową.
Uwaga
Xamarin.Forms 5.0 zawiera konwerter typów, który konwertuje reprezentację ciągu funkcji złagodzenia na odpowiedni Easing element członkowski wyliczenia. Ten konwerter typów jest automatycznie wywoływany we wszystkich właściwościach typu Easing ustawionych w języku XAML.
Aby uzyskać więcej informacji na temat używania metod rozszerzenia animacji w ViewExtensions klasie, zobacz Simple Animations (Proste animacje). Funkcje easing mogą być również używane przez klasę Animation . Aby uzyskać więcej informacji, zobacz Animacje niestandardowe.
Niestandardowe funkcje easing
Istnieją trzy główne podejścia do tworzenia niestandardowej funkcji złagodzenia:
- Utwórz metodę
double, która przyjmuje argument i zwracadoublewynik. - Utwórz element
Func<double, double>. - Określ funkcję easing jako argument konstruktora
Easing.
We wszystkich trzech przypadkach niestandardowa funkcja luzowania powinna zwrócić wartość 0 dla argumentu 0 i 1 dla argumentu 1. Można jednak zwrócić dowolną wartość między wartościami argumentu 0 i 1. Każde podejście zostanie omówione z kolei.
Niestandardowa metoda easing
Niestandardową funkcję złagodzenia można zdefiniować jako metodę double , która przyjmuje argument i zwraca double wynik, jak pokazano w poniższym przykładzie kodu:
double CustomEase (double t)
{
return t == 0 || t == 1 ? t : (int)(5 * t) / 5.0;
}
await image.TranslateTo(0, 200, 2000, (Easing)CustomEase);
Metoda CustomEase obcina wartość przychodzącą do wartości 0, 0.2, 0.4, 0.6, 0.8 i 1. W związku z tym Image wystąpienie jest tłumaczone w dyskretnych skokach, a nie płynnie.
Niestandardowa funkcja func ułatwiania
Niestandardową funkcję złagodzenia można również zdefiniować jako Func<double, double>funkcję , jak pokazano w poniższym przykładzie kodu:
Func<double, double> CustomEaseFunc = t => 9 * t * t * t - 13.5 * t * t + 5.5 * t;
await image.TranslateTo(0, 200, 2000, CustomEaseFunc);
Reprezentuje CustomEaseFunc funkcję złagodzenia, która zaczyna się szybko, spowalnia i odwraca kurs, a następnie odwraca kurs ponownie, aby szybko przyspieszyć w kierunku końca. W związku z tym, podczas gdy ogólny ruch Image wystąpienia jest w dół, również tymczasowo odwraca kurs w połowie animacji.
Niestandardowy konstruktor easing
Niestandardową funkcję złagodzenia można również zdefiniować jako argument Easing konstruktora, jak pokazano w poniższym przykładzie kodu:
await image.TranslateTo (0, 200, 2000, new Easing (t => 1 - Math.Cos (10 * Math.PI * t) * Math.Exp (-5 * t)));
Niestandardowa funkcja luzowania jest określana jako argument Easing funkcji lambda konstruktora i używa Math.Cos metody do utworzenia wolnego efektu upuszczania, który jest tłumiony przez metodę Math.Exp . W związku z tym wystąpienie jest tłumaczone tak, aby wydawało się, Image że spadnie do końcowego miejsca spoczynku.
Podsumowanie
W tym artykule pokazano, jak korzystać ze wstępnie zdefiniowanych funkcji ułatwiania i jak tworzyć niestandardowe funkcje złagodzenia. Xamarin.Forms Zawiera klasę Easing , która umożliwia określenie funkcji transferu, która kontroluje szybkość lub spowolnienie animacji podczas ich uruchamiania.