如何让代码在Android中等待动画结束?

5
我有一个EditText,android:maxLength="17",使用带有onClickListener的按钮来更新此EditText的文本。当文本长度达到16时,EditText会使用TranslateAnimation(0,-15,0,0)向左动画移动大约一个字符距离,然后删除EditText的第一个字符。首先我调用执行动画的方法,然后调用删除第一个字符的方法,如下所示:
animate(); removeChar();
问题在于,在动画结束之前,字符已被删除,这意味着在动画运行时,removeChar()完成了其功能,而我希望removeChar()在动画结束后执行其功能。
当我在Eclipse中编写代码时,我发现没有任何对象的animation listener,当我搜索时,我发现可以使用animation listener解决此问题。
这些方法没有错误,并且按照我想要的方式执行其功能。以下是方法的代码:
 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循环和动画未结束时,循环变成了无限循环,导致应用程序停止。
我搜索了很多资料,但没有找到合适的答案,请帮帮我。由于我是新手,所以我更喜欢一个代码片段或一个小例子。真的需要帮助...

请查看以下链接... http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html - Uttam
1个回答

7

将一个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();
    }

});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接