我在同一位置生成了一些ImageViews
。现在,我想对每个图像应用动画,但不是在同一时间。
让我们说我希望第一张图像在第0秒开始移动,然后在第2秒开始移动图像,依此类推。
我有一个数组中的图像,imb_items[]
。
如果我使用它:
for(int j = 0; j < i; j++) {
final int finalJ = j;
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
imb_items[finalJ].startAnimation(translateAnim);
Log.i("tag", "This'll run 5000 milliseconds later");
}
},
5000*finalJ
);
}
当第二张图像开始移动时,第一张图像会停止并消失。
我怎么能解决这个问题?我希望所有的图像继续运动。
答案 0 :(得分:1)
它无法正常工作,因为您正在尝试将for循环与其他内容的延迟执行进行交互。它不会像这样工作。
但为什么不设置动画的起始偏移? https://developer.android.com/reference/android/view/animation/Animation.html#setStartOffset(long)
有一个ImageView数组和一个Animation数组(每个ImageView一个动画)
for(int j=0; j<i;j++) {
translateAnim[j].setStartOffset(5000*j);
imb_items[j].startAnimation(translateAnim[j]);
}