1

我正在学习一些 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

  1. 以减速的速度从草地到半空中(到位置 X)
  2. 从位置 X 开始弹跳

?

如果是,那怎么能用这些来写onAnimationEnd呢?提前感谢您的建议!

4

0 回答 0