在android studio中自动更改动画

时间:2014-12-23 15:52:18

标签: android animation

我尝试做一些事情,比如当我点击一个按钮时,它会运行一个动画,然后在第一个动画完成后它会变成另一个不同的动画。我正在为动画使用动画列表。

我正在使用if else来改变动画但是如何在第一个条件下实现另一个动画?

if(i == 0)
{
    //if 1st time click the button, it will transform from fattest to fat...
    transformAnimation.start();
    i++;
}
if(i == 1)
{
    iv.setImageResource(R.drawable.transform_2);
    transformToSlim = (AnimationDrawable) iv.getDrawable();
    transformToSlim.start();
    i++;
}
else if(i == 2)
{
    iv.setImageResource(R.drawable.transform_3);
    transformToSlimmest = (AnimationDrawable) iv.getDrawable();
    transformToSlimmest.start();
}
}

2 个答案:

答案 0 :(得分:0)

有些事情对你有用:

transformAnimation.setAnimationListener(new Animation.AnimationListener(){
    @Override
    public void onAnimationStart(Animation arg0) {
    }           
    @Override
    public void onAnimationRepeat(Animation arg0) {
    }           
    @Override
    public void onAnimationEnd(Animation arg0) {
        transformToSlim.start();
    }
});
transformToSlim.setAnimationListener(new Animation.AnimationListener(){
    @Override
    public void onAnimationStart(Animation arg0) {
    }           
    @Override
    public void onAnimationRepeat(Animation arg0) {
    }           
    @Override
    public void onAnimationEnd(Animation arg0) {
        transformToSlimmest.start();
    }
});

这会为您的动画添加侦听器,如果当前动画结束,则会触发下一个动画。

答案 1 :(得分:0)

使用此代码在第一个动画完成时开始第二个动画:

Animation animation1 = ...;
animation1.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {}

    @Override
    public void onAnimationEnd(Animation animation) {

        Animation animation2 = ...;
        animation2.start();
    }

    @Override
    public void onAnimationRepeat(Animation animation) {}
});
animation1.start();