Android动画转身

时间:2013-10-21 21:04:14

标签: android rotateanimation

我正在使用以下代码在一系列中转弯(左或右)。所以,如果我一个接一个地称它为:turn(90); turn(90); turn(-90);它显示的是最后一个。我想向他们展示所有内容,等到第一个完成后再继续下一个。有什么想法吗?

public void turn(int i)
{

    RotateAnimation anim = new RotateAnimation( currentRotation, currentRotation + i,
                                                Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
                                                currentRotation = (currentRotation + i) % 360;

    anim.setInterpolator(new LinearInterpolator());
    anim.setDuration(1000);
    anim.setFillEnabled(true);

    anim.setFillAfter(true);
    token.startAnimation(anim);
}

1 个答案:

答案 0 :(得分:0)

所以我所做的是创建一个动画的que和一个迭代器来运行它......在我定义了所有需要完成的动画之后,将它们添加到了que中,我运行了第一个,然后在AnimationListener处理剩下的事情。

Queue<RotateAnimation> que = new LinkedList<RotateAnimation>();
Iterator<RotateAnimation> queIt;


public void turnToken(int i){

    RotateAnimation anim = new RotateAnimation( currentRotation, currentRotation + i,
                                                Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
                                                currentRotation = (currentRotation + i) % 360;

    anim.setInterpolator(new LinearInterpolator());
    anim.setDuration(1000);
    anim.setFillEnabled(true);
    anim.setAnimationListener(this);
    anim.setFillAfter(true);

    que.add(anim);
}

AnimationListener:

@Override
public void onAnimationEnd(Animation arg0) {
    // TODO Auto-generated method stub

    if(queIt.hasNext()){
        token.startAnimation((Animation) queIt.next());
        }
}

@Override
public void onAnimationRepeat(Animation arg0) {
    // TODO Auto-generated method stub
}

@Override
public void onAnimationStart(Animation arg0) {
    // TODO Auto-generated method stub

}