【问题标题】:Animate multiple views using the same Animation使用相同的动画为多个视图设置动画
【发布时间】:2017-04-11 23:12:42
【问题描述】:

我有一个简单的动画文件:

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:ordering="sequentially" >
<objectAnimator
    android:duration="1000"
    android:propertyName="x"
    android:repeatCount="1"
    android:repeatMode="reverse"
    android:valueTo="-50"
    android:valueType="floatType" />

基本上,这需要一个组件并沿 X 轴向左滑动 50dp。我已经成功地将它附加到一个组件上,它可以完美运行,但是当我尝试一次将它附加到多个组件时,动画只适用于最终组件。

例如: 我有5张卡。 AI 敌人从手中随机选择一张牌。但我想为敌人“挑选”卡片制作动画。这就是动画发挥作用的地方。

所以是这样的

AnimatorSet cardSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.pick_card);

for(int i=0; i<enemyCards.size(); i++){
   cardSet.setTarget(enemyCards.get(i));
   cardSet.start();    
}

这里的目标是遍历数组中的每张卡片并将其在 X 轴上滑出。但是动画只出现在最后一张卡片上(数组中的第 5 张卡片)

另外这是一个大胆的原因,人们不再阅读大段落,并且有人继续编辑我的格式) - 我希望每个人都有延迟卡滑出的时间。所以循环应该是这样的:

loop{
    animate card 1
    delay
}

动画文件应该类似于

android:delay="100"

我一直在尝试,但收效甚微

【问题讨论】:

    标签: java android animation android-animation objectanimator


    【解决方案1】:

    您可以在某个视图组中收集您的视图,而不是仅对父视图进行动画处理,以便所有子视图都进行动画处理?

    【讨论】:

      【解决方案2】:

      这是一个用文本编辑器编写的草图代码,它可能有语法错误,但你会明白这个概念:

      AnimatorSet cardSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.anim.pick_card);
      
      List<AnimatorSet> animators = new ArrayList<>(enemyCards.size());
      
      for (int i = 0, size = animators.size(); i < size; ++i) {
          animators.add(cardSet.clone());
      }
      
      final int step = 100;
      int delay = 0;
      
      for (int i = 0, size = enemyCards.size(); i < size; ++i) {
          AnimatorSet set = animators.get(i);
          set.setTarget(enemyCards.get(i));
          set.setStartDelay(delay);
          delay += step;
          set.start();    
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多