[英]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.