【问题标题】:Android: Two animation together with different durationAndroid:两个动画一起不同的持续时间
【发布时间】:2012-12-05 22:39:43
【问题描述】:

我有两个不同持续时间的动画,如下所示:
动画 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)动画从 Y:0 到 500 期间循环 25 次动画 Anim2(持续时间 200)。

我尝试过使用 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(不是动画)被线性转换为 -200,500。

【问题讨论】:

  • 感谢您的回答,但 AnimatorSet 自 Android 3.0 起可用。我需要 2.3+ 的东西。我找到了 NineOld 库 (nineoldandroids.com) 但我想知道是否有一些简单的解决方案。
  • 好的。那么是否必须使用动画集?因为我只使用了 2 个不同的动画(不是动画集的一部分),而且它是同时播放的
  • 不起作用不是很具体。你能告诉我们什么不起作用吗?
  • 一个动画以水平方式为 imageview 设置动画并重复 25 次相同的动画,我想以垂直方式翻译整个动画。我想要像你在阅读时用手指做的那样。

标签: android animation duration


【解决方案1】:

现在我知道你想做什么了。你可能最好做多个动画 - 每个“线”一个。添加AnimationListener 知道上一个Animation 什么时候结束(onAnimationEnd 回调),跳下一行,再次从右到左。

它们基本上都是一样的,只是 fromYDeltatoYDelta 的值会随着每个动画而改变。

【讨论】:

  • 谢谢。它可以解决我的问题:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 2023-03-23
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
相关资源
最近更新 更多