package com.nineoldandroids.view; import java.lang.ref.WeakReference; import android.view.View; import android.view.animation.Interpolator; import com.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; } }