content: package com.hx.curtain.drawer.nineoldandroids.view;
  
  import java.lang.ref.WeakReference;
  
  import android.view.View;
  import android.view.animation.Interpolator;
  import com.hx.curtain.drawer.nineoldandroids.animation.Animator.AnimatorListener;
  
  class ViewPropertyAnimatorICS extends ViewPropertyAnimator {
      /**
       * A value to be returned when the WeakReference holding the native implementation
       * returns <code>null</code>
       */
      private final static long RETURN_WHEN_NULL = -1L;
  
      /**
       * A WeakReference holding the native implementation of ViewPropertyAnimator
       */
      private final WeakReference<android.view.ViewPropertyAnimator> mNative;
  
      ViewPropertyAnimatorICS(View view) {
          mNative = new WeakReference<android.view.ViewPropertyAnimator>(view.animate());
      }
  
      @Override
      public ViewPropertyAnimator setDuration(long duration) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.setDuration(duration);
          }
          return this;
      }
  
      @Override
      public long getDuration() {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              return n.getDuration();
          }
          return RETURN_WHEN_NULL;
      }
  
      @Override
      public ViewPropertyAnimator setStartDelay(long startDelay) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.setStartDelay(startDelay);
          }
          return this;
      }
  
      @Override
      public long getStartDelay() {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              return n.getStartDelay();
          }
          return RETURN_WHEN_NULL;
      }
  
      @Override
      public ViewPropertyAnimator setInterpolator(Interpolator interpolator) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.setInterpolator(interpolator);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator setListener(final AnimatorListener listener) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              if (listener == null) {
                  n.setListener(null);
              } else {
                  n.setListener(new android.animation.Animator.AnimatorListener() {
                      @Override
                      public void onAnimationStart(android.animation.Animator animation) {
                          listener.onAnimationStart(null);
                      }
  
                      @Override
                      public void onAnimationRepeat(android.animation.Animator animation) {
                          listener.onAnimationRepeat(null);
                      }
  
                      @Override
                      public void onAnimationEnd(android.animation.Animator animation) {
                          listener.onAnimationEnd(null);
                      }
  
                      @Override
                      public void onAnimationCancel(android.animation.Animator animation) {
                          listener.onAnimationCancel(null);
                      }
                  });
              }
          }
          return this;
      }
  
      @Override
      public void start() {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.start();
          }
      }
  
      @Override
      public void cancel() {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.cancel();
          }
      }
  
      @Override
      public ViewPropertyAnimator x(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.x(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator xBy(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.xBy(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator y(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.y(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator yBy(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.yBy(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator rotation(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.rotation(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator rotationBy(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.rotationBy(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator rotationX(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.rotationX(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator rotationXBy(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.rotationXBy(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator rotationY(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.rotationY(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator rotationYBy(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.rotationYBy(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator translationX(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.translationX(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator translationXBy(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.translationXBy(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator translationY(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.translationY(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator translationYBy(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.translationYBy(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator scaleX(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.scaleX(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator scaleXBy(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.scaleXBy(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator scaleY(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.scaleY(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator scaleYBy(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.scaleYBy(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator alpha(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.alpha(value);
          }
          return this;
      }
  
      @Override
      public ViewPropertyAnimator alphaBy(float value) {
          android.view.ViewPropertyAnimator n = mNative.get();
          if (n != null) {
              n.alphaBy(value);
          }
          return this;
      }
  }
  