我执行按钮点击触发的一些事情:
private void onSearchPressed() {
title.setVisibility(View.GONE);
etActionSearch.setVisibility(View.VISIBLE);
etActionSearch.requestFocus();
btnActionFavs.setVisibility(View.GONE);
etActionSearch.setAnimation(AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.et_anim_open));
isSearch = true;
}
所以基本上我只是隐藏了一些Views
并显示了其他一些内容,我的EditText
正在使用简单的Animation
“滑出”。
当取消操作时,我会颠倒过程:
private void onSearchCancelled() {
etActionSearch.setAnimation(AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.et_anim_close));
etActionSearch.setVisibility(View.GONE);
btnActionFavs.setVisibility(View.VISIBLE);
title.setVisibility(View.VISIBLE);
isSearch = false;
}
我想要做的是将动画(相反方向)应用于我的EditText
,因此幻灯片动画也会消失。问题是所有代码都是立即执行的,所以EditText
在动画完成之前就已经消失了。我尝试了一些奇怪的事情,例如使用AsyncTask
并将动画放在doInBackground()
方法中,在Views
中设置onPostExecute()
的可见性,但这并没有改变任何内容。{除了滞后印象之外,{1}}也没有做任何事情。任何解决方案?
答案 0 :(得分:2)
动画以异步方式运行,因此您需要对该动画使用AnimationListener
并将动画结束时应执行的代码放到onAnimationEnd()
。
请参阅文档:http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html
答案 1 :(得分:1)
就像Marcin Orlowski所说,你必须在你的AnimationListener
上使用Animation
。动画结束后,它将启动onAnimationEnd()
事件,您可以在那里完成任务。
以下是我可以看到的一个小例子:
Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.your_specific_animation);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
// Do your hiding stuff here
}
});
etActionSearch.startAnimation(animation);