我有一个带有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真的需要帮助......
答案 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();
}
});