我的问题是因为糟糕的设计最有可能的,但无论如何:变量的变化onAnimationEnd运行之前
我有也有不少ImageViews(地形块)的ArrayList。 然后,我反复以编程方式创建ImageViews,然后将其动画设置为名为moveLeft
的动画,该动画仅使ImageView左移10秒。
在动画结束之后,我需要将ImageView的可见性设置为GONE,因为到那时它将不在屏幕上。 问题是我用int count
来保存ImageView的总数。
moveLeft.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
terrainArray.get(count - 1).setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
我不断制造新的地形块,这意味着我的计数变量不断变化。
但是,onAnimationEnd不会像动画开始时那样以相同的计数值运行。因此,它最终将其块的可见性设置为GONE
。
这是因为onAnimationEnd实际上没有运行,直到创建块之后10秒,因为动画持续10秒。
因此,当我想设置其可见性时,由于正在运行动画时正创建更多块,所以我留下了错误的块编号。 (因此增加count
的价值)
是否有某种方式,我可以存储count
'的方法onAnimationStart
的当前值,然后传递相同值onAnimationEnd
方法? (并使其适用于无限数量的地形块?此外,只有一个听众,并且多个块可能同时结束动画。)