如何制作连续的按钮动画?

时间:2015-06-17 10:52:46

标签: android animation

网格上有几个按钮。我需要这个按钮是动画。动画很简单,我只想让这个按钮改变颜色并返回原来的颜色,就像“西蒙游戏”一样。 所以,我的问题是下一个: 我一直在尝试使用AnimatorSet。我为按钮创建了自己的类:

class Button{

   ObjectAnimator anim;
   public Button button;
   public int colorA;
   public int colorB;

    public Button(){};

};

我有:

private Boton[] buttons;
buttons = new Boton[numButtons];

for(int i=0; i<numButtons; i++)
     buttons[i] = new Boton();

后:

  for(int i=0; i<numButtons; i++){

        buttons[i].animacion=ObjectAnimator.ofFloat(buttons[i], "alpha", 1f, 1f);          
        buttons[i].animacion.setStartDelay(1000);
        buttons[i].animacion.setDuration(2000);
        buttons[i].animacion.addListener(new miAnimador(i));

    }

另外,我定义了自己的Listener:

class miAnimador implements Animator.AnimatorListener{


    int numBoton;

    public miAnimador(int num){
        numBoton=num;
    }

    public void onAnimationCancel(Animator paramAnonymousAnimator) {
    }
    @Override
    public void onAnimationEnd(Animator animator) {
        buttons[numBoton].button.setBackgroundColor(buttons[numBoton].colorA);
    }
    @Override
    public void onAnimationRepeat(Animator animator) {
    }
    @Override
    public void onAnimationStart(Animator animator) {
        buttons[numBoton].button.setBackgroundColor(buttons[numBoton].colorB);
    }
};

这对我来说非常强大,因为我可以使用按钮矢量并在需要时启动动画。

我可以做到这一点:使用我想要的动画序列构建一个动画集。

            AnimatorSet s = new AnimatorSet();

            final List<Animator>listaAnimaciones = new ArrayList<Animator>();


            final List<Animator>AnimationsSequence = new ArrayList<Animator>();

            AnimationsSequence.add(buttons[0].anim);
            AnimationsSequence.add(buttons[1].anim);

            //Add list
            s.playSequentially(AnimationSequence);

            s.setStartDelay(5000);

            //Start animation
            s.start();

嗯,这很好用,我喜欢AnimatorSet工作的形式,但是当我尝试两次相同的按钮动画时会出现问题。 例外情况是:“AnimatorSet中不存在循环依赖”,我不明白为什么会这样。

尽管如此,我需要做到这一点,我认为这是最好的解决方案,但是: 如果这不起作用,怎么能得到这个?

我接受任何想法。

如果你认为这是一个糟糕的解决方案,请我知道你的意见。

0 个答案:

没有答案