Merge "Use Alpha instead of TransitionAlpha for Activity Transitions." into lmp-dev
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user