Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24314e7d authored by George Mount's avatar George Mount
Browse files

Fix ChangeTransform works only once on a View.

Bug 17762118

When ChangeTransform is used on a View, its intermediate values
are being set, but not cleared after the transition completes
unless it uses a GhostView. This CL clears the intermediate
values when the animation ends if no GhostView is used.

Change-Id: I2590d9c2bc36d31023b3e1af94d2bd72c9589eb5
parent 39838b98
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -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) {
                    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);