am 7d3d95e7: Merge "Fix exit transitions hiding views permanently." into lmp-dev
* commit '7d3d95e790c475c81da9be60d3355637ac5b4332': Fix exit transitions hiding views permanently.
This commit is contained in:
@@ -196,7 +196,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
|
||||
final protected ArrayList<String> mAllSharedElementNames;
|
||||
final protected ArrayList<View> mSharedElements = new ArrayList<View>();
|
||||
final protected ArrayList<String> mSharedElementNames = new ArrayList<String>();
|
||||
final protected ArrayList<View> mTransitioningViews = new ArrayList<View>();
|
||||
protected ArrayList<View> mTransitioningViews = new ArrayList<View>();
|
||||
protected SharedElementCallback mListener;
|
||||
protected ResultReceiver mResultReceiver;
|
||||
final private FixedEpicenterCallback mEpicenterCallback = new FixedEpicenterCallback();
|
||||
@@ -222,7 +222,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
|
||||
mListener.onMapSharedElements(mAllSharedElementNames, sharedElements);
|
||||
mSharedElementNames.addAll(sharedElements.keySet());
|
||||
mSharedElements.addAll(sharedElements.values());
|
||||
if (getViewsTransition() != null) {
|
||||
if (getViewsTransition() != null && mTransitioningViews != null) {
|
||||
ViewGroup decorView = getDecor();
|
||||
if (decorView != null) {
|
||||
decorView.captureTransitioningViews(mTransitioningViews);
|
||||
@@ -233,6 +233,9 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
|
||||
}
|
||||
|
||||
protected void stripOffscreenViews() {
|
||||
if (mTransitioningViews == null) {
|
||||
return;
|
||||
}
|
||||
Rect r = new Rect();
|
||||
for (int i = mTransitioningViews.size() - 1; i >= 0; i--) {
|
||||
View view = mTransitioningViews.get(i);
|
||||
@@ -592,7 +595,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
|
||||
// Clear the state so that we can't hold any references accidentally and leak memory.
|
||||
mWindow = null;
|
||||
mSharedElements.clear();
|
||||
mTransitioningViews.clear();
|
||||
mTransitioningViews = null;
|
||||
mOriginalAlphas.clear();
|
||||
mResultReceiver = null;
|
||||
mPendingTransition = null;
|
||||
|
||||
@@ -115,7 +115,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
|
||||
super.viewsReady(sharedElements);
|
||||
mIsReadyForTransition = true;
|
||||
hideViews(mSharedElements);
|
||||
if (getViewsTransition() != null) {
|
||||
if (getViewsTransition() != null && mTransitioningViews != null) {
|
||||
hideViews(mTransitioningViews);
|
||||
}
|
||||
if (mIsReturning) {
|
||||
@@ -249,7 +249,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
|
||||
mIsCanceled = true;
|
||||
if (getViewsTransition() == null || mIsViewsTransitionStarted) {
|
||||
showViews(mSharedElements, true);
|
||||
} else {
|
||||
} else if (mTransitioningViews != null) {
|
||||
mTransitioningViews.addAll(mSharedElements);
|
||||
}
|
||||
mSharedElementNames.clear();
|
||||
@@ -416,7 +416,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
|
||||
Transition viewsTransition = null;
|
||||
if (startEnterTransition) {
|
||||
mIsViewsTransitionStarted = true;
|
||||
if (!mTransitioningViews.isEmpty()) {
|
||||
if (mTransitioningViews != null && !mTransitioningViews.isEmpty()) {
|
||||
viewsTransition = configureTransition(getViewsTransition(), true);
|
||||
if (viewsTransition != null && !mIsReturning) {
|
||||
stripOffscreenViews();
|
||||
@@ -426,11 +426,14 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
|
||||
viewTransitionComplete();
|
||||
} else {
|
||||
viewsTransition.forceVisibility(View.INVISIBLE, true);
|
||||
final ArrayList<View> transitioningViews = mTransitioningViews;
|
||||
viewsTransition.addListener(new ContinueTransitionListener() {
|
||||
@Override
|
||||
public void onTransitionStart(Transition transition) {
|
||||
mEnterViewsTransition = transition;
|
||||
showViews(mTransitioningViews, false);
|
||||
if (transitioningViews != null) {
|
||||
showViews(transitioningViews, false);
|
||||
}
|
||||
super.onTransitionStart(transition);
|
||||
}
|
||||
|
||||
@@ -451,7 +454,8 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
|
||||
TransitionManager.beginDelayedTransition(decorView, transition);
|
||||
if (startSharedElementTransition && !mSharedElementNames.isEmpty()) {
|
||||
mSharedElements.get(0).invalidate();
|
||||
} else if (startEnterTransition && !mTransitioningViews.isEmpty()) {
|
||||
} else if (startEnterTransition && mTransitioningViews != null &&
|
||||
!mTransitioningViews.isEmpty()) {
|
||||
mTransitioningViews.get(0).invalidate();
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -126,7 +126,9 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
|
||||
}
|
||||
|
||||
public void resetViews() {
|
||||
showViews(mTransitioningViews, true);
|
||||
if (mTransitioningViews != null) {
|
||||
showViews(mTransitioningViews, true);
|
||||
}
|
||||
showViews(mSharedElements, true);
|
||||
mIsHidden = true;
|
||||
ViewGroup decorView = getDecor();
|
||||
@@ -253,7 +255,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
|
||||
private void startExitTransition() {
|
||||
Transition transition = getExitTransition();
|
||||
ViewGroup decorView = getDecor();
|
||||
if (transition != null && decorView != null) {
|
||||
if (transition != null && decorView != null && mTransitioningViews != null) {
|
||||
TransitionManager.beginDelayedTransition(decorView, transition);
|
||||
mTransitioningViews.get(0).invalidate();
|
||||
} else {
|
||||
@@ -289,19 +291,20 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
|
||||
|
||||
private Transition getExitTransition() {
|
||||
Transition viewsTransition = null;
|
||||
if (!mTransitioningViews.isEmpty()) {
|
||||
if (mTransitioningViews != null && !mTransitioningViews.isEmpty()) {
|
||||
viewsTransition = configureTransition(getViewsTransition(), true);
|
||||
}
|
||||
if (viewsTransition == null) {
|
||||
exitTransitionComplete();
|
||||
} else {
|
||||
final ArrayList<View> transitioningViews = mTransitioningViews;
|
||||
viewsTransition.addListener(new ContinueTransitionListener() {
|
||||
@Override
|
||||
public void onTransitionEnd(Transition transition) {
|
||||
transition.removeListener(this);
|
||||
exitTransitionComplete();
|
||||
if (mIsHidden) {
|
||||
showViews(mTransitioningViews, true);
|
||||
if (mIsHidden && transitioningViews != null) {
|
||||
showViews(transitioningViews, true);
|
||||
}
|
||||
if (mSharedElementBundle != null) {
|
||||
delayCancel();
|
||||
|
||||
Reference in New Issue
Block a user