2010-08-24 43 views
2

我嘗試在changeText 動畫一個TextView但總是看到動畫的一個方向,我看到的只是淡出如何動畫顯示淡出和淡入而TextView的改變文本

我做的嘗試是:beforChange =淡出和的onChange或淡入

後,這裏是我在我活動的onCreate方法的代碼:

final Animation out = new AlphaAnimation(1.0f, 0.0f); 
    out.setDuration(1000); 

    final Animation in = new AlphaAnimation(0.0f, 1.0f); 
    in.setDuration(1000); 


    bidFirst.setAnimation(out); 
    bidMiddle.setAnimation(out); 
    bidLast.setAnimation(out); 

    TextWatcher bidWatcher = new TextWatcher() { 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
     in.startNow(); 
     bidFirst.setAnimation(out); 
     bidMiddle.setAnimation(out); 
     bidLast.setAnimation(out); 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     out.startNow(); 
     bidFirst.setAnimation(in); 
     bidMiddle.setAnimation(in); 
     bidLast.setAnimation(in); 
     } 

     public void afterTextChanged(Editable s) { 
     } 
    }; 
    bidFirst.addTextChangedListener(bidWatcher); 
    bidMiddle.addTextChangedListener(bidWatcher); 
    bidLast.addTextChangedListener(bidWatcher); 

我覺得有什麼不對,我的代碼,但我相信它有工作。

我現在擁有的是:在每一個setText上,改變後的文本只有FadeOut,但是在文本發生變化之後,永遠不會FadeIn !?

回答

6

TextSwitcher正是你正在尋找的。只需使用他們的setInAnimation()setOutAnimation即可。如果通過setText()

+0

聽起來不錯 – m6tt 2010-08-24 09:11:00

1

通過你的代碼看起來你是在告訴TextView的變化,而不是在褪色後淡出。

而且我不知道該代碼將如何有效的beforeTextChanged前被調用只有時刻文字被改變。目前根本不會有足夠的時間對任何動畫上beforeTextChanged發生,因爲它會立即通過你的代碼替換onTextChanged

編輯** 回覆如下

所以發表評論我要得到的TextView淡出然後淡入新內容我會以編程方式啓動fadeOut動畫而不是使用Textwatcher。我會給fadeOut動畫一個AnimationListener和animationEnd然後你可以在開始你的fadeIn動畫之前設置新的文本。

+0

更改文字,動畫將自動運行您知道如何使其更有效嗎? 我只想要一個淡出/淡入淡出的setText被調用。我嘗試使用TextSwitcher,但我不確定這對於更多TextView是否有用。 – Informatic0re 2010-08-24 09:01:42