Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Xamarin.Forms включает класс Easing, который позволяет указать функцию передачи, которая определяет, как анимация ускоряется или замедляется при выполнении. В этой статье показано, как использовать предварительно определенные функции упрощения и как создавать пользовательские функции упрощения.
Класс Easing определяет ряд функций упрощения, которые можно использовать анимацией:
- Функция
BounceInупрощения отскакивает анимацию в начале. - Функция
BounceOutупрощения отскакивает анимацию в конце. - Функция
CubicInупрощения медленно ускоряет анимацию. - Функция
CubicInOutупрощения ускоряет анимацию в начале и уменьшает анимацию в конце. - Функция
CubicOutупрощения быстро уменьшает анимацию. - Функция
Linearупрощения использует константную скорость и является функцией упрощения по умолчанию. - Функция
SinInупрощения плавно ускоряет анимацию. - Функция
SinInOutупрощения плавно ускоряет анимацию в начале и плавно уменьшает анимацию в конце. - Функция
SinOutупрощения плавно уменьшает анимацию. - Функция
SpringInупрощения приводит к тому, что анимация очень быстро ускоряется к концу. - Функция
SpringOutупрощения приводит к быстрому замедлению анимации в конце.
И In Out суффиксы указывают, заметны ли эффект, предоставляемый функцией упрощения, в начале анимации, в конце или обоих.
Кроме того, можно создать пользовательские функции упрощения. Дополнительные сведения см. в разделе "Пользовательские функции упрощения".
Использование функции упрощения
Методы расширения анимации в классе позволяют указать функцию упрощения в ViewExtensions качестве конечного параметра метода, как показано в следующем примере кода:
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);
Указав функцию упрощения для анимации, скорость анимации становится нелинейной и создает эффект, предоставляемый функцией упрощения. Опущение функции упрощения при создании анимации приводит к тому, что анимация использует функцию упрощения по умолчанию Linear , которая создает линейную скорость.
Примечание.
Xamarin.Forms 5.0 включает преобразователь типов, который преобразует строковое представление функции упрощения в соответствующий Easing элемент перечисления. Этот преобразователь типов автоматически вызывается для любых свойств типа Easing , заданных в XAML.
Дополнительные сведения об использовании методов расширения анимации в классе см. в ViewExtensions разделе "Простые анимации". Функции упрощения также можно использовать классом Animation . Дополнительные сведения см. в разделе "Пользовательские анимации".
Пользовательские функции упрощения
Существует три основных подхода к созданию пользовательской функции упрощения.
- Создайте метод, который принимает
doubleаргумент и возвращаетdoubleрезультат. - Создайте
Func<double, double>. - Укажите функцию упрощения в качестве аргумента конструктора
Easing.
Во всех трех случаях пользовательская функция упрощения должна возвращать 0 для аргумента 0 и 1 для аргумента 1. Однако любое значение можно вернуть между значениями аргументов 0 и 1. Теперь каждый подход будет обсуждаться в свою очередь.
Настраиваемый метод упрощения
Пользовательская функция упрощения может быть определена как метод, который принимает double аргумент и возвращает double результат, как показано в следующем примере кода:
double CustomEase (double t)
{
return t == 0 || t == 1 ? t : (int)(5 * t) / 5.0;
}
await image.TranslateTo(0, 200, 2000, (Easing)CustomEase);
Метод CustomEase усечение входящего значения до значений 0, 0,2, 0.4, 0.6, 0.8 и 1. Таким образом, Image экземпляр преобразуется в дискретные переходы, а не гладко.
Пользовательское упрощение Func
Пользовательская функция упрощения также может быть определена в качестве примера Func<double, double>кода, как показано в следующем примере кода:
Func<double, double> CustomEaseFunc = t => 9 * t * t * t - 13.5 * t * t + 5.5 * t;
await image.TranslateTo(0, 200, 2000, CustomEaseFunc);
Представляет CustomEaseFunc функцию упрощения, которая начинается быстро, замедляет и изменяет курс, а затем снова меняет курс, чтобы быстро ускориться к концу. Таким образом, в то время как общее перемещение экземпляра Image вниз, оно также временно изменяет курс на полпути анимации.
Настраиваемый конструктор упрощений
Пользовательская функция упрощения также может быть определена в качестве аргумента конструктора Easing , как показано в следующем примере кода:
await image.TranslateTo (0, 200, 2000, new Easing (t => 1 - Math.Cos (10 * Math.PI * t) * Math.Exp (-5 * t)));
Пользовательская функция упрощения указана в качестве лямбда-аргумента Easing функции конструктору и использует Math.Cos метод для создания медленного эффекта падения, который заглушен методом Math.Exp . Таким образом, экземпляр преобразуется таким образом, чтобы он, как представляется, Image падал в его окончательное место отдыха.
Итоги
В этой статье показано, как использовать предварительно определенные функции упрощения и как создавать пользовательские функции упрощения. Xamarin.FormsEasing включает в себя класс, позволяющий указать функцию передачи, которая определяет, как анимация ускоряется или замедляется при выполнении.