我正在学习一些 android 动画,并希望执行以下操作:
背景:
一只兔子原本睡在草地上。按下按钮时,它会垂直跳高一次,减速到半空中(X位置),然后从X位置开始下降并垂直弹跳几次,最后回到原来的位置。
在飞行过程中,它会睁开眼睛(可绘制的 r_rabbit_wake400),而在开始和动画停留在草地上之后,它会闭上眼睛(可绘制的 r_rabbit_sleep400)。
代码:
protected void onCreate(Bundle savedInstanceState)
{
....
button_rabbit.setBackgroundResource(R.drawable.r_rabbit_sleep400);
....
public void button_action_click (View view)
{
button_rabbit.setBackgroundResource(R.drawable.r_rabbit_wake400);
ObjectAnimator animY = ObjectAnimator.ofFloat(button_rabbit, "translationY", -500f, 0f);
animY.setDuration(1500);//1.5sec
animY.setInterpolator(new BounceInterpolator());
animY.setRepeatCount(0);
animY.start();
}
问题:
这只会给出一个结果,兔子立即睁开眼睛从草地上直接飞向空中(没有减速速度的过渡),然后跌落到地面并反弹几次回到草地上,然后没有它的眼睛闭上了。
我是否应该使用这些将动画分成两个阶段AnimationListener
:
- 以减速的速度从草地到半空中(到位置 X)
- 从位置 X 开始弹跳
?
如果是,那怎么能用这些来写onAnimationEnd
呢?提前感谢您的建议!