簡體   English   中英

使用相同的動畫對多個視圖進行動畫處理

[英]Animate multiple views using the same Animation

我有一個簡單的動畫文件:

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

我一直都沒有成功

您可以在某個視圖組中收集視圖,然后僅對父視圖進行動畫處理,以便所有子視圖都具有動畫效果?

這是一個用文本編輯器編寫的草圖代碼,可能有語法錯誤,但是您會明白這個概念:

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();    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM