2013-10-04 122 views
0

我有三種動畫,比如縮放,平移和縮放。我按順序播放這些動畫。前兩個工作正常,但最後一個縮放動畫將視圖的位置重置爲原始位置。如果我刪除了最後一個縮放動畫,那麼在翻譯動畫之後視圖保持新位置時工作良好。你對這種行爲有什麼想法嗎?比例動畫重置位置

AnimationSet animationSet = new AnimationSet(false); 
animationSet.setFillAfter(true); 

ScaleAnimation scaleAnimation1 = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f); 
scaleAnimation1.setDuration(500); 
scaleAnimation1.setFillAfter(true); 

TranslateAnimation moveAnim = new TranslateAnimation(0, -x, 0, -y); 
moveAnim.setDuration(1000); 
moveAnim.setStartOffset(500); 
moveAnim.setFillAfter(true); 

ScaleAnimation scaleAnimation2 = new ScaleAnimation(1.0f, 0.0f, 1.0f, 0.0f); 
scaleAnimation2.setDuration(500); 
scaleAnimation2.setStartOffset(1000); 
scaleAnimation2.setFillAfter(true); 
scaleAnimation2.setFillBefore(true); 

animationSet.addAnimation(scaleAnimation1); 
animationSet.addAnimation(moveAnim); 
animationSet.addAnimation(scaleAnimation2); 
+0

「將視圖的位置重置爲原始位置」 - 您能更精確嗎?重置看起來像跳過屏幕?它重新設置爲何處。 Android SDK的動畫有一個常見的誤解/設計缺陷,可能會導致這種情況。 – Tom

+0

我的意思是,在動畫之前,視圖是屏幕的中心。翻譯動畫之後,視圖會顯示在頂部。當'scaleAnimation2'開始時,視圖也會回到屏幕的中心 –

回答

1

scaleAnimation2.setFillAfter(true); - 如果fillAfter是真實的,改造這個動畫執行將持續,當它完成

scaleAnimation2.setFillBefore(true); - 如果fillBefore是真實的,這個動畫將動畫的開始時間之前申請轉型。

這兩個屬性不能同時工作,後面設置的屬性是有效的。 那麼,刪除scaleAnimation2.setFillBefore(true);可能會解決您的問題。