【问题标题】:TranslationAnimation on two view not syncronized两个视图上的翻译动画不同步
【发布时间】:2013-12-24 20:25:20
【问题描述】:

我正在尝试“幻灯片”动画两个视图,一个在另一个之上(存在)。

这就是我正在做的:

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

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

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

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

【问题讨论】:

标签: android animation translate-animation


【解决方案1】:

因为你在不同的时刻开始动画,你需要并行运行它们,为了你的帮助幸运的 android 有能力结合不同的动画和并行运行它们的选项。执行以下操作。

  1. 创建一个 AnimatorSet,
  2. 在该集中添加两个对象动画
  3. 一起播放它们,这将确保您的所有动画并行运行,因此看起来是同步的。

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

【讨论】:

  • 动画不是设置为对一个 ONE 视图有多个动画吗?在我的情况下,我想在两个视图上设置一种动画......我理解错了吗?
  • 不是这样的,Animation Set 可以一次保存多个视图的动画,只需将您不同的动画添加到一个集合中并一起播放。
  • 但我只有一个动画。两个视图都使用相同的动画。
  • precentageLayout.startAnimation(precentageTranslateAnim);反应BtnsLayout.startAnimation(reactionBtnsTranslateAnim);这是你的两个动画,对,只需将 precentageTranslateAnim,reactionBtnsTranslateAnim 放入一组并播放。
  • 是我的错,是同一个动画。我编辑了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多