2011-09-28 118 views
4

我有一個EditText與android:maxLength =「17」和使用按鈕與onClickListener更新此EditText的文本這裏的過程是,當文本長度達到16 EditText動畫的左側約一個字符距離使用TranslateAnimation (0,-15,0,0);然後EditText的第一個字符被刪除。對於這第一個我調用的方法來執行動畫,然後調用方法來刪除第一個字符如下所示如何讓代碼等待,直到動畫結束於android?

animate();
removeChar();

這裏的問題是,在動畫結束之前,角色被移除,意味着動畫運行時removeChar()完成其功能,而我希望removeChar()在動畫結束後執行其功能。

當我用Google搜索這個我找到答案用動畫的聽衆,但同時ECLIPS寫代碼我沒有發現任何動畫偵聽對象

的方法沒有錯誤,並執行它們的功能準確,因爲我想。對於方法的代碼顯示如下

public void animate() 
{ 
       //slide is declared at class level 
       slide = new TranslateAnimation(0, -15, 0,0); 
       slide.setDuration(1250); 
       slide.setFillAfter(true); 
       myEditText.startAnimation(slide); 
} 


public void removeChar() 
{   
    String update=""; 
    for(int i=1 ; i < myEditText.getText().toString().length() ; i++) 
    { 
     update=update+input.getText().toString().charAt(i); 
    } 
    myEditText.setText(update); 
} 

我也曾嘗試使用下面的代碼等待動畫結束,但它會暫停應用程序。

  animate(); 
      //slide is declared at class level 
      while(!(slide.hasEnded())) 
       { 
        // Just waste the time 
       } 
      removeChar(); 

我認爲應用程序停止,因爲所有的處理進行了while循環和動畫doe'nt GOTS結束,因此循環將成爲無限循環,並導致應用程序停止

我搜索了很多,沒有發現合適答案plz幫助我,我會選擇一個代碼段或一個小例子,因爲我是新到Android PLZ真的需要幫助......

+0

看看這個鏈接... http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html – Uttam

+0

thnks它.......工作...... –

回答

6

連接的AnimationListener到您的動畫,然後在onAnimationEnd()方法執行removeChar()。就像這樣:

slide.addAnimationListener(new AnimationListener(){ 
    public void onAnimationStart(Animation a){} 
    public void onAnimationRepeat(Animation a){} 
    public void onAnimationEnd(Animation a){ 
     NameOfParentClass.this.removeChar(); 
    } 

}); 
+0

謝謝......它很好地工作........ –