【需求分析】
最近要实现一个类似于加速火箭移动的动画,需要带有位置移动和透明度转变的动画。类似于从A到B发生位移动画,且加速小火箭主键显示。而从B到C发生位移动画,且加速小火箭逐渐变暗消失。实现效果如图所示:
【需求拆分】
接到这个需求后,首先将需求进行细分,分为位移动画和逐渐变量(变暗)两个部分。对应的Android的动画类分别是TranslateAnimation(位移动画)和AlphaAniamtion(透明度变化动画)。首先先熟悉一下这两种动画。
1. TranslateAnimation 位移动画
private void startTranslateAnimation() {
/**
* 进行位移动画,标准步骤
* 1. 创建位移动画对象
* 构造函数 TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
* 参数含义:相对于原图位置 fromXDelta X轴起点相对于原图偏移 toXDelta X轴终点相对于原图偏移
* fromYDelta Y轴起点相对于原图偏移 toYDelta Y轴终点相对于原图偏移
* 2. 设置动画终点是否保持 setFillAfter : true 动画结束后留在终点 false:动画结束后返回起点
*/
TranslateAnimation translateAnimation = new TranslateAnimation(0.0f, 0.0f, 0.0f, -200.0f);
translateAnimation.setFillAfter(true);
translateAnimation.setDuration(1000);
mIVRocket.startAnimation(translateAnimation);
}
这里需要注意的一个小点:设置FillAfter的值,为true代表动画后View停留在终点位置处(下面左图所示),false代表动画结束后返回起点(下面右图所示)。