Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
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 включает в себя класс, позволяющий указать функцию передачи, которая определяет, как анимация ускоряется или замедляется при выполнении.