我的問題是因爲糟糕的設計最有可能的,但無論如何:變量的變化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
方法? (並使其適用於無限數量的地形塊?此外,只有一個聽衆,並且多個塊可能同時結束動畫。)