放松功能
控制动画中的速度变化
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
缓动功能,产生线性速度。
有关在ViewExtensions
类中使用动画扩展方法的更多信息,请参阅简单动画。Animation
课堂上也可以使用缓解功能。有关详细信息,请参阅自定义动画。
自定义宽松功能
创建自定义宽松功能有三种主要方法:
- 创建一个接受
double
参数并返回double
结果的方法。 - 创建
Func<double, double>
。 - 指定缓动函数作为
Easing
构造函数的参数。
在所有三种情况下,自定义缓动函数对参数为0返回0,对于参数1,返回1。然而,可以在0和1的参数值之间返回任何值。现在将依次讨论每种方法。
自定义宽松方法
自定义缓动函数可以定义为一个接受double
参数并返回double
结果的方法,如下面的代码示例所示:
await image.TranslateTo(0, 200, 2000, CustomEase);
double CustomEase (double t)
{
return t == 0 || t == 1 ? t : (int)(5 * t) / 5.0;
}
该CustomEase
方法将输入值截断为值0,0.2,0.4,0.6,0.8和1.因此,Image
实例以离散跳转而不是平滑地转换。
自定义放松功能
自定义缓动函数也可以定义为Func<double, double>
,如下面的代码示例所示:
Func<double, double> CustomEase = t => 9 * t * t * t - 13.5 * t * t + 5.5 * t;
await image.TranslateTo(0, 200, 2000, CustomEase));
这CustomEase
Func
表示一个缓和的功能,从快速开始,减慢和反转过程,然后再次反过来,加速快速到最后。因此,虽然Image
实例的整体运动是向下的,但它也暂时在动画的一半中转。
自定义缓存构造函数
自定义缓动函数也可以定义为Easing
构造函数的参数,如下面的代码示例所示:
await image.TranslateTo (0, 200, 2000, new Easing (t => 1 - Math.Cos (10 * Math.PI * t) * Math.Exp (-5 * t)));
自定义缓动函数被指定为Easing
构造函数的lambda函数参数,并使用该Math.Cos
方法创建一个被该Math.Exp
方法抑制的缓慢降级效果。因此,Image
实例被翻译成似乎落在最后的休息处。
概要
本文演示了如何使用预定义的缓动函数,以及如何创建自定义缓动函数。Xamarin.Forms包括一个Easing
类,它允许您指定一个传递函数,用于控制动画在运行时加速或减慢的速度。