Cancel animation when target changes.

Bug 18201083

Change-Id: I2ea15063b18881c4b31ae6cdc287649dbc4a61f7
diff --git a/core/java/android/animation/ObjectAnimator.java b/core/java/android/animation/ObjectAnimator.java
index 500634c..59daaab 100644
--- a/core/java/android/animation/ObjectAnimator.java
+++ b/core/java/android/animation/ObjectAnimator.java
@@ -885,7 +885,8 @@
     }
 
     /**
-     * Sets the target object whose property will be animated by this animation
+     * Sets the target object whose property will be animated by this animation. If the
+     * animator has been started, it will be canceled.
      *
      * @param target The object being animated
      */
@@ -893,6 +894,9 @@
     public void setTarget(@Nullable Object target) {
         final Object oldTarget = getTarget();
         if (oldTarget != target) {
+            if (isStarted()) {
+                cancel();
+            }
             mTarget = target == null ? null : new WeakReference<Object>(target);
             // New target should cause re-initialization prior to starting
             mInitialized = false;