postDelayed如何运作?

时间:2014-07-23 09:59:57

标签: android animation delay

我在同一位置生成了一些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
    );
}

当第二张图像开始移动时,第一张图像会停止并消失。

我怎么能解决这个问题?我希望所有的图像继续运动。

1 个答案:

答案 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]);
}