Skip to content

Commit 24314e7

Browse files
author
George Mount
committed
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
1 parent 39838b9 commit 24314e7

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

core/java/android/transition/ChangeTransform.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,8 @@ public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues
228228
}
229229

230230
// Next handle the normal matrix transform:
231-
ObjectAnimator transformAnimator = createTransformAnimator(startValues, endValues);
231+
ObjectAnimator transformAnimator = createTransformAnimator(startValues, endValues,
232+
handleParentChange);
232233

233234
if (handleParentChange && transformAnimator != null && mUseOverlay) {
234235
createGhostView(sceneRoot, startValues, endValues);
@@ -238,7 +239,7 @@ public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues
238239
}
239240

240241
private ObjectAnimator createTransformAnimator(TransitionValues startValues,
241-
TransitionValues endValues) {
242+
TransitionValues endValues, final boolean handleParentChange) {
242243
Matrix startMatrix = (Matrix) startValues.values.get(PROPNAME_MATRIX);
243244
Matrix endMatrix = (Matrix) endValues.values.get(PROPNAME_MATRIX);
244245

@@ -277,7 +278,12 @@ public void onAnimationCancel(Animator animation) {
277278
@Override
278279
public void onAnimationEnd(Animator animation) {
279280
if (!mIsCanceled) {
280-
setCurrentMatrix(finalEndMatrix);
281+
if (handleParentChange && mUseOverlay) {
282+
setCurrentMatrix(finalEndMatrix);
283+
} else {
284+
view.setTagInternal(R.id.transitionTransform, null);
285+
view.setTagInternal(R.id.parentMatrix, null);
286+
}
281287
}
282288
ANIMATION_MATRIX_PROPERTY.set(view, null);
283289
transforms.restore(view);

0 commit comments

Comments
 (0)