我有一个简单的动画文件:
<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。我已成功将其附加到ONE组件,并且它可以完美地工作,但是当我尝试将其同时附加到多个组件时,动画仅适用于最终组件。
例如: 我有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
}
OR
动画文件应该是
android:delay="100"
我一直在努力,但收效甚微
答案 0 :(得分:1)
您可以在某个视图组中收集视图,而不是仅为父视图设置动画,以便为所有子视图设置动画效果?
答案 1 :(得分:1)
这是用文本编辑器编写的草图代码,它可能有语法错误,但你会得到这个概念:
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();
}