@Override
 protected void onDetachedFromWindow() {
   animator.stop();
   super.onDetachedFromWindow();
 }
 public void start() {
   viewAnimator.start();
 }
 @Override
 protected void onAttachedToWindow() {
   animator.start();
   super.onAttachedToWindow();
 }
 public AnimationBuilder onStop(AnimationListener.Stop stopListener) {
   viewAnimator.onStop(stopListener);
   return this;
 }
 public AnimationBuilder interpolator(Interpolator interpolator) {
   viewAnimator.interpolator(interpolator);
   return this;
 }
 public AnimationBuilder repeatMode(@ViewAnimator.RepeatMode int repeatMode) {
   viewAnimator.repeatMode(repeatMode);
   return this;
 }
 public AnimationBuilder onStart(AnimationListener.Start startListener) {
   viewAnimator.onStart(startListener);
   return this;
 }
 public AnimationBuilder repeatCount(@IntRange(from = -1) int repeatCount) {
   viewAnimator.repeatCount(repeatCount);
   return this;
 }
 public AnimationBuilder startDelay(@IntRange(from = 0) long startDelay) {
   viewAnimator.startDelay(startDelay);
   return this;
 }
 public AnimationBuilder duration(@IntRange(from = 1) long duration) {
   viewAnimator.duration(duration);
   return this;
 }
 public AnimationBuilder thenAnimate(View... views) {
   return viewAnimator.thenAnimate(views);
 }
 public AnimationBuilder andAnimate(View... views) {
   return viewAnimator.addAnimationBuilder(views);
 }