1

我执行一些由按钮点击触发的事情:

    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正在使用一个简单的 set “滑出” 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;

}

我想做的是将动画(相反方向)应用于 my EditText,因此它也会随着幻灯片动画消失。问题是所有代码都立即执行,所以在EditText动画完成之前就消失了。我尝试了一些奇怪的事情,比如使用 anAsyncTask并将动画放在方法中,设置indoInBackground()的 Visibility但这并没有改变任何东西..除了滞后印象之外什么也没做。有什么解决办法吗?ViewsonPostExecute()SystemClock.sleep()

4

2 回答 2

2

动画是异步运行的,因此您需要AnimationListener在该动画上使用并将动画结束时应该执行的代码放到onAnimationEnd().

请参阅文档:http: //developer.android.com/reference/android/view/animation/Animation.AnimationListener.html

于 2013-08-08T13:24:19.457 回答
1

Like Marcin Orlowski said, you have to use AnimationListener with your Animation. After the animation is ended it will launch the onAnimationEnd() event where you can do your stuff.

Here's a little example what i could look like:

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);
于 2013-08-08T13:33:22.710 回答