两个视图上的翻译动画未同步

时间:2013-12-05 09:35:04

标签: android animation translate-animation

我正在尝试“幻灯片”动画两个视图,它们是另一个视图(y exiss)。

这就是我在做的事情:

TranslateAnimation precentageTranslateAnim = new TranslateAnimation(0, 0, shareBtnsHeight, 0);
precentageTranslateAnim.setDuration(TRANSLATE_ANIMATION_DURATION);
DecelerateInterpolator interpulator = new DecelerateInterpolator();
precentageTranslateAnim.setInterpolator(interpulator);
precentageLayout.setVisibility(View.VISIBLE);
precentageLayout.startAnimation(precentageTranslateAnim);
reactionsBtnsLayout.startAnimation(precentageTranslateAnim);

我的问题是,当动画发生时,您可以看到视图没有完全一起移动。

动画期间它们之间有一条小线。

有没有办法在它们之间进行同步?

1 个答案:

答案 0 :(得分:2)

因为你是在不同的时刻开始动画,你需要并行运行它们,为了你的帮助,幸运的机器人能够使用不同的动画和并行运行它们的选项。执行以下操作。

  1. 创建AnimatorSet,
  2. 在该集合中添加两个对象动画
  3. 一起播放,这将确保所有动画平行运行,以使其看起来同步。
  4. http://developer.android.com/reference/android/view/animation/AnimationSet.html

    阅读以上链接了解更多详情。代码

    ObjectAnimator animator1 = ObjectAnimator.ofFloat(precentageLayout, "y", shareBtnsHeight,0);
    ObjectAnimator animator2 = ObjectAnimator.ofFloat(reactionsBtnsLayout, "y", shareBtnsHeight,0); 
    animator1.setDuration(TRANSLATE_ANIMATION_DURATION);
    animator1.setDuration(TRANSLATE_ANIMATION_DURATION);
    DecelerateInterpolator interpulator = new DecelerateInterpolator();
    animator1.setInterpolator(interpulator);
    animator2.setInterpolator(interpulator);
    AnimatorSet set = new AnimatorSet();
    set.playTogether(animator1,animator2);
    
    set.start();