变速函数提供了数值的非线性变化能力,主要用于基础动画中,控制缩放大小、透明度值等按照非线性进行变化。使用方法:在动画中设置varSpeedFlag属性,它作用于设置varSpeedFlag的帧以及下一帧,支持30种函数类型。例如,在位移动画中可以利用变速函数来控制图片从起始位置移动到结束位置过程中的移动速率。
目前变速函数已支持动画有AlphaAnimation、PositionAnimation、RotationAnimation、SizeAnimation、VariableAnimation。
结合位移动画展示典型应用的XML规范,其他AlphaAnimation、RotationAnimation类似,不再赘述。
<PositionAnimation> <Position x="" y="" time="" varSpeedFlag=""/> <Position x="" y="" time="" /> </PositionAnimation>
可填充在varSpeedFlag中的变速函数类型:
| 参 数 | 类 型 | 选 项 | 注 释 |
|---|---|---|---|
| SineFun_In | 字符串 | 选填 | 按照正弦曲线图呈现的效果缓入 |
| SineFun_Out | 字符串 | 选填 | 按照正弦曲线图呈现的效果缓出 |
| SineFun_InOut | 字符串 | 选填 | 按照正弦曲线图呈现的效果缓入缓出 |
| QuadFun_In | 字符串 | 选填 | 按照二次方曲线图呈现的效果缓入 |
| QuadFun_Out | 字符串 | 选填 | 按照二次方曲线图呈现的效果缓出 |
| QuadFun_InOut | 字符串 | 选填 | 按照二次方曲线图呈现的效果缓入缓出 |
| CubicFun_In | 字符串 | 选填 | 按照三次方曲线图呈现的效果缓入 |
| CubicFun_Out | 字符串 | 选填 | 按照三次方曲线图呈现的效果缓出 |
| CubicFun_InOut | 字符串 | 选填 | 按照三次方曲线图呈现的效果缓入缓出 |
| QuartFun_In | 字符串 | 选填 | 按照四次方曲线图呈现的效果缓入 |
| QuartFun_Out | 字符串 | 选填 | 按照四次方曲线图呈现的效果缓出 |
| QuartFun_InOut | 字符串 | 选填 | 按照四次方曲线图呈现的效果缓入缓出 |
| QuintFun_In | 字符串 | 选填 | 按照五次方曲线图呈现的效果缓入 |
| QuintFun_Out | 字符串 | 选填 | 按照五次方曲线图呈现的效果缓出 |
| QuintFun_InOut | 字符串 | 选填 | 按照五次方曲线图呈现的效果缓入缓出 |
| ExpoFun_In | 字符串 | 选填 | 按照指数曲线图呈现的效果缓入 |
| ExpoFun_Out | 字符串 | 选填 | 按照指数曲线图呈现的效果缓出 |
| ExpoFun_InOut | 字符串 | 选填 | 按照指数曲线图呈现的效果缓入缓出 |
| CircFun_In | 字符串 | 选填 | 按照圆形曲线图呈现的效果缓入 |
| CircFun_Out | 字符串 | 选填 | 按照圆形曲线图呈现的效果缓出 |
| CircFun_InOut | 字符串 | 选填 | 按照圆形曲线图呈现的效果缓入缓出 |
| BackFun_In | 字符串 | 选填 | 按照超过范围的三次方曲线图呈现的效果缓入 |
| BackFun_Out | 字符串 | 选填 | 按照超过范围的三次方曲线图呈现的效果缓出 |
| BackFun_InOut | 字符串 | 选填 | 按照超过范围的三次方曲线图呈现的效果缓入缓出 |
| ElasticFun_In | 字符串 | 选填 | 按照指数衰减的正弦曲线图呈现的效果缓入 |
| ElasticFun_Out | 字符串 | 选填 | 按照指数衰减的正弦曲线图呈现的效果缓出 |
| ElasticFun_InOut | 字符串 | 选填 | 按照指数衰减的正弦曲线图呈现的效果缓入缓出 |
| BounceFun_In | 字符串 | 选填 | 按照指数衰减的反弹曲线图呈现的效果缓入 |
| BounceFun_Out | 字符串 | 选填 | 按照指数衰减的反弹曲线图呈现的效果缓出 |
| BounceFun_InOut | 字符串 | 选填 | 按照指数衰减的反弹曲线图呈现的效果缓入缓出 |
示例一:下面示例展示了当图片ty.png从(0,0)移动到(500,0)过程中使用了SineFun_Out函数效果,整个动画历时4000ms。注意:当从(500,0)移动到(800,0)过程中由于未使用变速函数,因此移动速率是均匀的。
<Image x="100" y="690" centerX="136" centerY="351" src="ty.png"> <PositionAnimation> <Position x="0" y="0" time="0" varSpeedFlag="SineFun_Out"/> <Position x="500" y="0" time="4000"/> <Position x="800" y="0" time="6000"/> </PositionAnimation> </Image>