2011-12-15 84 views
1

我試圖在一排我的TextView的Android的android TextView的動畫不流暢

下進行2個文字動畫

第一:

TextView target = (TextView)findViewById(R.id.textanimation); 
target.setText(text1); 
target.startAnimation(animationSet1); 

animationSet1是一組阿爾法和翻譯動畫:

Animation alpha = new AlphaAnimation(0.0f, 1.0f);  
Animation a = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0, 
Animation.RELATIVE_TO_SELF, -1.0f, 
Animation.RELATIVE_TO_SELF, 0);  

alpha.setDuration(1000); 
a.setDuration(1000); 

當onAnimationEnd發生在animationSet1中時,我立即開始另一個動畫

TextView target = (TextView)findViewById(R.id.textanimation); 
target.setText(text2); 
target.startAnimation(animationSet1); 

但是在第二個動畫中,我可以看到第二個完全不透明的文本,但它應該以0 alpha開始。如何避免這種情況?將包含任何答案。

P.S.即使我在兩個文檔中都有兩個單獨的文本視圖 - 也會看到相同的錯誤。

如果我在動畫之間放了一些延遲,它們都會變得平滑。

  • 謝爾蓋
+0

它根本不清楚你遇到的問題是什麼。動畫結束後,你想要動畫更改嗎? – slayton 2011-12-15 21:41:24

+0

當第一個動畫競爭時(getAnimation爲null),我刪除先前的文本並分配新的文本並使用新的文本開始新的動畫。我不明白爲什麼在第二部動畫的開始時我會看到第一部動畫的文字。同樣的問題,即使TexViews是不同的。 – DrSergey84 2011-12-15 22:14:08

回答

0

我不知道你是如何觸發第二動畫開始的第一個動畫的終止後。我猜你正在檢查視圖上的動畫是否爲空。這不是最好的或正確的方式來做到這一點。相反,你應該是AnimationListener

Animation animation1 = new Animation();//Replace with your animation 

animation1.setDuration(DURATION_1); 
animation1.setAnimationListener(new AnimationListener() { 
    public void onAnimationStart(Animation arg0) {} 
    public void onAnimationRepeat(Animation arg0) {} 
    public void onAnimationEnd(Animation arg0) { 
     Animation animation2 = new Animation(); 
     animation2.setDuration(DURATION_2); 
     view2.startAnimation(animation2); 
    } 
}); 

view1.startAnimation(animation1);