如何让代码等到动画在android中结束?

时间:2011-09-28 13:36:28

标签: android android-widget

我有一个带有android:maxLength =“17”的EditText并使用带有onClickListener的按钮来更新此EditText的文本,这里的过程是当文本长度达到16时,EditText动画向左移动,距离大约使用一个字符TranslateAnimation(0,-15,0,0);然后删除EditText的第一个字符。为此,我首先调用方法执行动画,然后调用方法删除第一个characer,如下所示

动画();
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();

我认为应用程序暂停,因为所有处理都是for while循环和动画doe'nt gots结束,因此循环变为无限循环并导致应用程序停止

我搜索了很多,发现没有正确的答案PLZ帮助我,我会更喜欢一个代码片段或一个小例子,因为我是新手android plz真的需要帮助......

1 个答案:

答案 0 :(得分:7)

AnimationListener附加到动画中,然后在removeChar()方法中执行onAnimationEnd()。像这样:

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

});