Merge "Use Alpha instead of TransitionAlpha for Activity Transitions." into lmp-dev

This commit is contained in:
George Mount
2014-09-08 18:25:02 +00:00
committed by Android (Google) Code Review
3 changed files with 31 additions and 12 deletions

View File

@@ -205,6 +205,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
private boolean mIsStartingTransition;
private ArrayList<GhostViewListeners> mGhostViewListeners =
new ArrayList<GhostViewListeners>();
private ArrayMap<View, Float> mOriginalAlphas = new ArrayMap<View, Float>();
public ActivityTransitionCoordinator(Window window,
ArrayList<String> allSharedElementNames,
@@ -580,6 +581,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
mWindow = null;
mSharedElements.clear();
mTransitioningViews.clear();
mOriginalAlphas.clear();
mResultReceiver = null;
mPendingTransition = null;
mListener = null;
@@ -589,10 +591,27 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver {
return getWindow().getTransitionBackgroundFadeDuration();
}
protected static void setTransitionAlpha(ArrayList<View> views, float alpha) {
protected void hideViews(ArrayList<View> views) {
int count = views.size();
for (int i = 0; i < count; i++) {
views.get(i).setTransitionAlpha(alpha);
View view = views.get(i);
if (!mOriginalAlphas.containsKey(view)) {
mOriginalAlphas.put(view, view.getAlpha());
}
view.setAlpha(0f);
view.setTransitionAlpha(0f);
}
}
protected void showViews(ArrayList<View> views) {
int count = views.size();
for (int i = 0; i < count; i++) {
View view = views.get(i);
Float alpha = mOriginalAlphas.remove(view);
if (alpha != null) {
view.setAlpha(alpha);
view.setTransitionAlpha(1f);
}
}
}

View File

@@ -112,9 +112,9 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
protected void viewsReady(ArrayMap<String, View> sharedElements) {
super.viewsReady(sharedElements);
mIsReadyForTransition = true;
setTransitionAlpha(mSharedElements, 0);
hideViews(mSharedElements);
if (getViewsTransition() != null) {
setTransitionAlpha(mTransitioningViews, 0);
hideViews(mTransitioningViews);
}
if (mIsReturning) {
sendSharedElementDestination();
@@ -240,7 +240,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
if (!mIsCanceled) {
mIsCanceled = true;
if (getViewsTransition() == null || mIsViewsTransitionStarted) {
setTransitionAlpha(mSharedElements, 1);
showViews(mSharedElements);
} else {
mTransitioningViews.addAll(mSharedElements);
}
@@ -300,7 +300,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
// Now start shared element transition
ArrayList<View> sharedElementSnapshots = createSnapshots(sharedElementState,
mSharedElementNames);
setTransitionAlpha(mSharedElements, 1);
showViews(mSharedElements);
scheduleSetSharedElementEnd(sharedElementSnapshots);
ArrayList<SharedElementOriginalState> originalImageViewState =
setSharedElementState(sharedElementState, sharedElementSnapshots);
@@ -411,7 +411,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator {
@Override
public void onTransitionStart(Transition transition) {
mEnterViewsTransition = transition;
setTransitionAlpha(mTransitioningViews, 1);
showViews(mTransitioningViews);
super.onTransitionStart(transition);
}

View File

@@ -126,8 +126,8 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
}
public void resetViews() {
setTransitionAlpha(mTransitioningViews, 1);
setTransitionAlpha(mSharedElements, 1);
showViews(mTransitioningViews);
showViews(mSharedElements);
mIsHidden = true;
if (!mIsReturning && getDecor() != null) {
getDecor().suppressLayout(false);
@@ -187,7 +187,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
private void hideSharedElements() {
moveSharedElementsFromOverlay();
if (!mIsHidden) {
setTransitionAlpha(mSharedElements, 0);
hideViews(mSharedElements);
}
mSharedElementsHidden = true;
finishIfNecessary();
@@ -296,7 +296,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
transition.removeListener(this);
exitTransitionComplete();
if (mIsHidden) {
setTransitionAlpha(mTransitioningViews, 1);
showViews(mTransitioningViews);
}
if (mSharedElementBundle != null) {
delayCancel();
@@ -323,7 +323,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator {
transition.removeListener(this);
sharedElementTransitionComplete();
if (mIsHidden) {
setTransitionAlpha(mSharedElements, 1);
showViews(mSharedElements);
}
}
});