Invalidate entire scene root when executing the transition.

Bug 27778109

When switching from forced visibility to using real visibility,
I didn't take into account the fact that invalidating INVISIBLE
Views skip invalidation. This CL invalidates the scene root
to ensure that the transition is properly executed.

Change-Id: I092d0fe42229390927f7d1b65fc2b3ce5fc2938d
This commit is contained in:
George Mount
2016-03-23 11:08:39 -07:00
parent 3e2b413dc7
commit 52ff2b7798
2 changed files with 5 additions and 6 deletions

View File

@@ -537,12 +537,10 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
setTransitioningViewsVisiblity(View.INVISIBLE, false);
}
TransitionManager.beginDelayedTransition(decorView, transition);
if (startSharedElementTransition && !mSharedElementNames.isEmpty()) {
mSharedElements.get(0).invalidate();
}
if (startEnterTransition) {
setTransitioningViewsVisiblity(View.VISIBLE, true);
setTransitioningViewsVisiblity(View.VISIBLE, false);
}
decorView.invalidate();
} else {
transitionStarted();
}

View File

@@ -268,7 +268,8 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
if (transition != null && decorView != null && mTransitioningViews != null) {
setTransitioningViewsVisiblity(View.VISIBLE, false);
TransitionManager.beginDelayedTransition(decorView, transition);
setTransitioningViewsVisiblity(View.INVISIBLE, true);
setTransitioningViewsVisiblity(View.INVISIBLE, false);
decorView.invalidate();
} else {
transitionStarted();
}
@@ -367,7 +368,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
scheduleGhostVisibilityChange(View.VISIBLE);
setGhostVisibility(View.VISIBLE);
if (viewsTransition != null) {
setTransitioningViewsVisiblity(View.INVISIBLE, true);
setTransitioningViewsVisiblity(View.INVISIBLE, false);
}
decorView.invalidate();
} else {