2017-04-11 73 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();  
} 
相關問題