Android 两个视图上的TranslationAnimation未同步

Android 两个视图上的TranslationAnimation未同步,android,animation,translate-animation,Android,Animation,Translate Animation,我正在尝试“幻灯片”动画两个视图,一个在另一个上(y exiss) 这就是我正在做的: TranslateAnimation precentageTranslateAnim = new TranslateAnimation(0, 0, shareBtnsHeight, 0); precentageTranslateAnim.setDuration(TRANSLATE_ANIMATION_DURATION); DecelerateInterpolator interpulator = new De

我正在尝试“幻灯片”动画两个视图,一个在另一个上(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);
我的问题是,当动画发生时,您可以看到视图没有完全一起移动

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


有没有一种方法可以在它们之间进行同步?

因为你在不同的时刻启动动画,所以你需要并行运行它们,因为幸运的安卓有能力使用不同的动画,并可以选择并行运行它们。执行以下操作

  • 创建动画集
  • 在该集中添加两个对象动画
  • 将它们一起播放,这将确保所有动画并行运行,因此看起来是同步的
  • 阅读以上链接了解更多详细信息。代码如下

    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();
    

    动画不是设置为在一个视图中有多个动画吗?在我的例子中,我有一种动画,我想在两个视图上设置。。。我理解错了吗?不是这样的,动画集可以同时保存多个视图的动画,只需将不同的动画添加到一个集中并一起播放。但我只有一个动画。两个视图使用相同的动画。precentageLayout.startAnimation(precentageTranslateAnim);反应BTNSLayout.startAnimation(反应BTNSTranslateAnim);这是你的两个动画,对吧,只是把前一个动画,反应,然后把它放到一个场景中播放。这是我的错,是同一个动画。我编辑了这个问题。听起来你在尝试这样的事情:如果它对你有帮助,请向上投票