Xamarin.Forms 用户界面——动画——放松功能

放松功能

控制动画中的速度变化

PDF用于离线使用
示例代码:
相关文章:
相关API:

让我们知道你对此的感受

最后更新:2016年7月

Xamarin.Forms包含一个Easing类,允许您指定一个传递函数,用于控制动画在运行时如何加快或减慢速度。本文演示如何使用预定义的缓动函数,以及如何创建自定义缓动函数。

概观

Easing类定义了许多可通过动画被消耗缓和功能:

  • BounceIn缓动函数反弹开头动画。
  • BounceOut宽松的功能,在反弹结束时的动画。
  • CubicIn宽松的功能缓慢加速动画。
  • CubicInOut缓动函数加速在开始动画,并且在端部减速动画。
  • CubicOut缓动函数快速减速的动画。
  • Linear缓动函数采用恒定速度,并且是默认缓和功能。
  • SinIn缓动函数平滑地加速了动画。
  • SinInOut缓动函数平滑地加速在开始动画,并且顺利地在末端减速动画。
  • SinOut宽松的功能顺利减速动画。
  • SpringIn宽松的功能使动画很快接近尾声加速。
  • SpringOut宽松的功能使动画快接近尾声减速。

InOut后缀指示是否由所述缓动函数提供的效果是在动画的开始明显,在端部,或两者。

另外,可以创建自定义的宽松功能。有关更多信息,请参阅自定义缓动功能

消耗松弛功能

类中的动画扩展方法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课堂上也可以使用缓解功能。有关详细信息,请参阅自定义动画

自定义宽松功能

创建自定义宽松功能有三种主要方法:

  1. 创建一个接受double参数并返回double结果的方法。
  2. 创建Func<double, double>
  3. 指定缓动函数作为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类,它允许您指定一个传递函数,用于控制动画在运行时加速或减慢的速度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值