【问题标题】:Hiding and showing multiple views using the same animation使用相同的动画隐藏和显示多个视图
【发布时间】:2015-05-20 19:43:48
【问题描述】:

我想同时为多个视图应用动画,如何将所述动画应用到多种类型的视图(按钮、图像视图和其他视图)?

【问题讨论】:

  • 这个你得具体点,xml动画,animator,你要什么样的动画?
  • 请澄清您的问题。您想同时为多个视图设置动画(比如...淡入)吗?一个接一个?
  • 你不能。除非您实现自定义动画或使用 ValueAnimator 并手动将值设置为 Views。最重要的是你不应该这样做。您可以使用AnimatorSet 编排多个动画 - 无论它们是相同的还是完全不同的,但对于最基本的用例来说,即使这样也是不必要的。我的观点是:多个Views 使用不同的Animator 实例并没有错——即使它们都执行完全相同的动画。

标签: android android-animation


【解决方案1】:

如果您想要同时在多个视图上应用动画,只需在这些视图上一个接一个地调用startAnimation 方法。它们将同时发生

//Get your views
View view1 = findViewById(R.id.view1);
View view2 = findViewById(R.id.view2);
View view3 = findViewById(R.id.view3);

//Get your animation
Animation youranimation = AnimationUtils.loadAnimation(this, R.anim.animationid);

//Start animations
view1.startAnimation(youranimation);
view2.startAnimation(youranimation);
view3.startAnimation(youranimation);

或者如果你有很多观点:

Animation youranimation = AnimationUtils.loadAnimation(this, R.anim.animationid);
int[] viewIds = new int[]{R.id.view1,R.id.view2,R.id.view3,R.id.view4};
for(int id : viewIds) findViewById(id).startAnimation(youranimation);

也就是说,假设您想同时为多个视图设置动画,如果您正在做的是一个接一个,我们将深入研究动画侦听器,那是另一回事

【讨论】:

    【解决方案2】:

    您可以使用对象动画师。 link 中有一个简单的示例,您也可以使用它。

    您也可以使用这个tutorial。

    【讨论】:

      【解决方案3】:

      改为使用 ValueAnimator,并在 onAnimationUpdate 中设置 views 属性。

          mShowAnimator = ValueAnimator.ofFloat(0f, 1f);
          mShowAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
              @Override
              public void onAnimationUpdate(ValueAnimator animation) {
                  for (View v : mTargetViews) {
                      v.setAlpha((Float)animation.getAnimatedValue());
                  }
              }
          });
      

      【讨论】:

        【解决方案4】:

        您可以创建一个包含多个 ObjectAnimator 的大型 AnimatorSet()。这使您可以无延迟地同时播放所有动画。看我的回答here。

        【讨论】:

          猜你喜欢
          • 2012-08-09
          • 1970-01-01
          • 1970-01-01
          • 2015-03-29
          • 2011-11-19
          • 2013-11-14
          • 1970-01-01
          • 2021-03-03
          • 2013-12-31
          相关资源
          最近更新 更多