mAnimationFadeIn = AnimationUtils.loadAnimation(this, R.anim.fade_in); mAnimationFadeIn.setFillAfter(true); mAnimationFadeOut = AnimationUtils.loadAnimation(this, R.anim.fade_out); mAnimationFadeOut.setFillAfter(true); mAnimationScaleIn = AnimationUtils.loadAnimation(this, R.anim.slow_scale_in); mAnimationScaleIn.setFillAfter(true); mAnimationScaleIn.setFillEnabled(true); mAnimationScaleIn.setFillBefore(false); mAnimationScaleIn.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} @Override public void onAnimationEnd(Animation animation) { mImageView.startAnimation(mAnimationFadeOut); } }); mAnimationFadeOut.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} @Override public void onAnimationEnd(Animation animation) { mImageView.setImageResource(mImages[++mImageIndex > 2 ? mImageIndex=0 : mImageIndex]); mImageView.startAnimation(mAnimationFadeIn); } }); mAnimationFadeIn.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} @Override public void onAnimationEnd(Animation animation) { mImageView.startAnimation(mAnimationScaleIn); } }); mImageView.startAnimation(mAnimationScaleIn);