diff --git a/core/java/android/transition/ChangeTransform.java b/core/java/android/transition/ChangeTransform.java index 1b8d57c59dd0d..3fd28a6af0f6f 100644 --- a/core/java/android/transition/ChangeTransform.java +++ b/core/java/android/transition/ChangeTransform.java @@ -228,7 +228,8 @@ public class ChangeTransform extends Transition { } // Next handle the normal matrix transform: - ObjectAnimator transformAnimator = createTransformAnimator(startValues, endValues); + ObjectAnimator transformAnimator = createTransformAnimator(startValues, endValues, + handleParentChange); if (handleParentChange && transformAnimator != null && mUseOverlay) { createGhostView(sceneRoot, startValues, endValues); @@ -238,7 +239,7 @@ public class ChangeTransform extends Transition { } private ObjectAnimator createTransformAnimator(TransitionValues startValues, - TransitionValues endValues) { + TransitionValues endValues, final boolean handleParentChange) { Matrix startMatrix = (Matrix) startValues.values.get(PROPNAME_MATRIX); Matrix endMatrix = (Matrix) endValues.values.get(PROPNAME_MATRIX); @@ -277,7 +278,12 @@ public class ChangeTransform extends Transition { @Override public void onAnimationEnd(Animator animation) { if (!mIsCanceled) { - setCurrentMatrix(finalEndMatrix); + if (handleParentChange && mUseOverlay) { + setCurrentMatrix(finalEndMatrix); + } else { + view.setTagInternal(R.id.transitionTransform, null); + view.setTagInternal(R.id.parentMatrix, null); + } } ANIMATION_MATRIX_PROPERTY.set(view, null); transforms.restore(view);