在postDelayed run()中调用动画不会被调用

时间:2015-03-25 20:28:00

标签: android android-animation

我有一个线性布局,我希望它在使用处理程序延迟3秒后进行动画制作。

经过3秒后,它甚至没有执行动画,也没有进入AnimationListener的方法。

我是这样做的:

    loginBox.setVisibility(View.GONE);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

            Animation animTranslate = AnimationUtils.loadAnimation(getApplicationContext(),
                    R.anim.translate);
            animTranslate.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    loginBox.setVisibility(View.VISIBLE);
                    Animation animFade = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade);
                    loginBox.startAnimation(animFade);
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                }
            });

            btnContinue.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(getApplicationContext(), MainActivity.class);
                    startActivity(i);

                    finish();
                }
            });


        }
    }, 3000);

单击btnContinue时,run()方法正常工作。

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:3)

你忘了打电话了

loginBox.startAnimation(animTranslate)
在启动loginBox.setVisibility(View.VISIBLE);

之前,您可能需要TranslateAnimation