emen
emen

Reputation: 6308

Animation doesn't get called inside postDelayed run()

I have a linearlayout that I want it to be animated after 3 seconds delay using Handler.

After 3 seconds have passed, it doesn't even execute the animation, nor did it enter the AnimationListener's methods.

Here is how I do it:

    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);

The run() method works fine when I click btnContinue.

How can I make it work?

Upvotes: 2

Views: 992

Answers (1)

Blackbelt
Blackbelt

Reputation: 157437

you forgot to call

loginBox.startAnimation(animTranslate)

and probably you want loginBox.setVisibility(View.VISIBLE); before starting the TranslateAnimation

Upvotes: 3

Related Questions