Android:两个不同持续时间的动画

时间:2012-12-05 22:39:44

标签: android animation duration

我有两个不同持续时间的动画如下:
动画1:

    TranslateAnimation trans1 = new TranslateAnimation(0, 0, 0, 500);  
    trans1.setStartOffset(0);  
    trans1.setDuration(5000);  
    trans1.setFillAfter(true);  

动画2:

    TranslateAnimation trans2 = new TranslateAnimation(0, -100, -200, -200);  
    trans2.setDuration(200);  
    trans2.setRepeatCount(25);  
    trans2.setFillAfter(true);  

如您所见,这些动画的持续时间不同。我想在一次Anim1(持续时间5000)动画中循环25次,动画Anim2(持续时间200)从Y:0到500.

我尝试过使用AnimationSet和addAnimation,但它不想工作。 你能给我一些提示如何解决这个问题?

我的代码:

AnimationSet rootSet = new AnimationSet(true);   
rootSet.setInterpolator(new AccelerateInterpolator());  
rootSet.setRepeatMode(Animation.INFINITE);  
rootSet.setRepeatCount(200);  
rootSet.setDuration(5000);  
rootSet.setFillAfter(true);  

    TranslateAnimation trans1 = new TranslateAnimation(0, 0, 0, 500);  
    trans1.setStartOffset(0);  
    trans1.setDuration(5000);  
    trans1.setFillAfter(true);  

rootSet.addAnimation(trans1);


AnimationSet rootSet2 = new AnimationSet(true);  
rootSet2.setInterpolator(new AccelerateInterpolator());  
rootSet2.setRepeatMode(Animation.INFINITE);  
rootSet2.setRepeatCount(200);  
rootSet2.setDuration(200);  

    TranslateAnimation trans2 = new TranslateAnimation(0, -100, -200, -200);  
    trans2.setDuration(200);
    trans2.setRepeatCount(25);
    trans2.setFillAfter(true);

rootSet2.addAnimation(trans2);  

rootSet.addAnimation(rootSet2);  

iv.startAnimation(rootSet);  

修改
当我只播放trans2动画时,它会重复25次(水平方式)。 此外,我希望这个动画以垂直方式(trans1)动画(整个水平动画,不仅仅是imageview)。

我希望这个描述会更清楚。

当我在一个AnimationSet中添加这两个动画时,第一个动画根本不起作用,而imageview(不是animationn)被线性转换为-200,500。

1 个答案:

答案 0 :(得分:0)

现在我明白了你想做什么。你可能更喜欢做多个动画 - 每个“线”一个。添加AnimationListener以了解上一个动画何时结束(onAnimationEnd回调),向下跳一行并再次从右向左移动。

它们基本相同,只是每个动画的fromYDeltatoYDelta值会发生变化。