Android alpha animation fadein fadeout with delays Android alpha animation fadein fadeout with delays android android

Android alpha animation fadein fadeout with delays


Ok Keep in mind these 2 points to solve this


  • If I want to animate 1.0f to 0.0f after 5 seconds with an animation duration of 1 seconds, this is ultimately a 1 second animation with a pause of 5 seconds.

    To acheive this:

    1. setDuration(1000) (it has a 1 second duration)
    2. setStartOffset(5000) (it will start after 5 seconds)

  • You only need 2 animations that will loop forever.

    1.0.0f to 1.0f with 5 seconds pause and 1 second duration

    2.1.0f to 0.0f with 5 seconds pause and 1 second duration


And here is the code:

    animation1 = new AlphaAnimation(0.0f, 1.0f);    animation1.setDuration(1000);    animation1.setStartOffset(5000);    animation2 = new AlphaAnimation(1.0f, 0.0f);    animation2.setDuration(1000);    animation2.setStartOffset(5000);    textView.startAnimation(animation1);

However to loop forever I will use AnimationListener because repeatCount is buggy:

    animation1 = new AlphaAnimation(0.0f, 1.0f);    animation1.setDuration(1000);    animation1.setStartOffset(5000);    //animation1 AnimationListener    animation1.setAnimationListener(new AnimationListener(){        @Override        public void onAnimationEnd(Animation arg0) {            // start animation2 when animation1 ends (continue)            textView.startAnimation(animation2);        }        @Override        public void onAnimationRepeat(Animation arg0) {            // TODO Auto-generated method stub        }        @Override        public void onAnimationStart(Animation arg0) {            // TODO Auto-generated method stub        }    });    animation2 = new AlphaAnimation(1.0f, 0.0f);    animation2.setDuration(1000);    animation2.setStartOffset(5000);    //animation2 AnimationListener    animation2.setAnimationListener(new AnimationListener(){        @Override        public void onAnimationEnd(Animation arg0) {            // start animation1 when animation2 ends (repeat)            textView.startAnimation(animation1);        }        @Override        public void onAnimationRepeat(Animation arg0) {            // TODO Auto-generated method stub        }        @Override        public void onAnimationStart(Animation arg0) {            // TODO Auto-generated method stub        }    });    textView.startAnimation(animation1);


There is a simpler solution to this.

Lets assume that your view is in state GONE. To animate to its visibility:

yourView.setVisibility(View.VISIBLE);yourView.animate().alpha(1).setDuration(300);

Through the same way you can add animation listeners.

This also works for scale and translation animations.


Try This

val shortAnimationDuration = 1000            yourView.apply {                alpha = 0f                animate()                    .alpha(1f)                    .setDuration(shortAnimationDuration.toLong())                    .setListener(object :AnimatorListenerAdapter(){                        override fun onAnimationEnd(animation: Animator?) {                           //You can add what you want to do after completing animation                        }                    })            }

This is a Fade in animation. If you want Fade out you just swap the alpha values.