am ffbf66b6: am afb539e6: Merge "Transition: remap if views in calling activity became invalid" into lmp-dev

* commit 'ffbf66b6e4e0c7de293156e32aff73f61127db2a':
  Transition: remap if views in calling activity became invalid
This commit is contained in:
Dake Gu
2014-08-08 19:51:10 +00:00
committed by Android Git Automerger
2 changed files with 19 additions and 5 deletions

View File

@@ -193,7 +193,8 @@ class ActivityTransitionState {
private void startEnter() {
if (mEnterActivityOptions.isReturning()) {
if (mExitingToView != null) {
mEnterTransitionCoordinator.viewInstancesReady(mExitingFrom, mExitingToView);
mEnterTransitionCoordinator.viewInstancesReady(mExitingFrom, mExitingTo,
mExitingToView);
} else {
mEnterTransitionCoordinator.namedViewsReady(mExitingFrom, mExitingTo);
}
@@ -248,8 +249,6 @@ class ActivityTransitionState {
mEnterTransitionCoordinator.cancelEnter();
mEnterTransitionCoordinator = null;
}
ArrayMap<String, View> sharedElements = new ArrayMap<String, View>();
activity.getWindow().getDecorView().findNamedViews(sharedElements);
ExitTransitionCoordinator exitCoordinator =
new ExitTransitionCoordinator(activity, mEnteringNames, null, null, true);

View File

@@ -24,6 +24,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.ResultReceiver;
import android.text.TextUtils;
import android.transition.Transition;
import android.transition.TransitionManager;
import android.util.ArrayMap;
@@ -82,8 +83,22 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
});
}
public void viewInstancesReady(ArrayList<String> accepted, ArrayList<View> localViews) {
triggerViewsReady(mapSharedElements(accepted, localViews));
public void viewInstancesReady(ArrayList<String> accepted, ArrayList<String> localNames,
ArrayList<View> localViews) {
boolean remap = false;
for (int i = 0; i < localViews.size(); i++) {
View view = localViews.get(i);
if (!TextUtils.equals(view.getTransitionName(), localNames.get(i))
|| !view.isAttachedToWindow()) {
remap = true;
break;
}
}
if (remap) {
triggerViewsReady(mapNamedElements(accepted, localNames));
} else {
triggerViewsReady(mapSharedElements(accepted, localViews));
}
}
public void namedViewsReady(ArrayList<String> accepted, ArrayList<String> localNames) {