2017-04-11 49 views
1

动画多个视图我有一个简单的动画文件:使用相同的动画

<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" /> 

基本上,这需要一个分量和由50dp滑动它沿X轴向左。我已经成功地将它附加到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" 

我一直努力收效甚微

回答

1

您可以收集您的意见一些viewgroup和动画只是父视图,所以所有的子视图动画?

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();  
} 
相关问题