2011-09-28 74 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

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