am b3199092: am 20f71891: Merge "Fix Fade out during Activity Transition." into mnc-dev

* commit 'b31990920aa964496194831e93ac701e5eb19e63':
  Fix Fade out during Activity Transition.
This commit is contained in:
George Mount
2015-07-06 18:44:27 +00:00
committed by Android Git Automerger

View File

@@ -21,14 +21,11 @@ import com.android.internal.R;
import android.animation.Animator; import android.animation.Animator;
import android.animation.Animator.AnimatorListener; import android.animation.Animator.AnimatorListener;
import android.animation.Animator.AnimatorPauseListener; import android.animation.Animator.AnimatorPauseListener;
import android.animation.AnimatorListenerAdapter;
import android.content.Context; import android.content.Context;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
/** /**
* This transition tracks changes to the visibility of target views in the * This transition tracks changes to the visibility of target views in the
@@ -507,7 +504,8 @@ public abstract class Visibility extends Transition {
private final int mFinalVisibility; private final int mFinalVisibility;
private final ViewGroup mParent; private final ViewGroup mParent;
private boolean mEnded; private boolean mLayoutSuppressed;
private boolean mFinalVisibilitySet = false;
boolean mCanceled = false; boolean mCanceled = false;
public DisappearListener(View view, int finalVisibility, boolean isForcedVisibility) { public DisappearListener(View view, int finalVisibility, boolean isForcedVisibility) {
@@ -515,10 +513,8 @@ public abstract class Visibility extends Transition {
this.mIsForcedVisibility = isForcedVisibility; this.mIsForcedVisibility = isForcedVisibility;
this.mFinalVisibility = finalVisibility; this.mFinalVisibility = finalVisibility;
this.mParent = (ViewGroup) view.getParent(); this.mParent = (ViewGroup) view.getParent();
if (!isForcedVisibility && mParent != null) { // Prevent a layout from including mView in its calculation.
// Prevent a layout from including mView in its calculation. suppressLayout(true);
mParent.suppressLayout(true);
}
} }
@Override @Override
@@ -542,12 +538,10 @@ public abstract class Visibility extends Transition {
@Override @Override
public void onAnimationRepeat(Animator animation) { public void onAnimationRepeat(Animator animation) {
} }
@Override @Override
public void onAnimationStart(Animator animation) { public void onAnimationStart(Animator animation) {
} }
@Override @Override
@@ -562,37 +556,35 @@ public abstract class Visibility extends Transition {
@Override @Override
public void onTransitionPause(Transition transition) { public void onTransitionPause(Transition transition) {
if (mParent != null && !mIsForcedVisibility) { suppressLayout(false);
mParent.suppressLayout(false);
}
} }
@Override @Override
public void onTransitionResume(Transition transition) { public void onTransitionResume(Transition transition) {
if (mParent != null && !mIsForcedVisibility) { suppressLayout(true);
mParent.suppressLayout(true);
}
} }
private void hideViewWhenNotCanceled() { private void hideViewWhenNotCanceled() {
if (!mEnded) { if (!mCanceled) {
if (!mCanceled) { if (mIsForcedVisibility) {
if (mIsForcedVisibility) { mView.setTransitionAlpha(0);
mView.setTransitionAlpha(0); } else if (!mFinalVisibilitySet) {
} else { // Recreate the parent's display list in case it includes mView.
// Recreate the parent's display list in case it includes mView. mView.setTransitionVisibility(mFinalVisibility);
mView.setTransitionVisibility(mFinalVisibility); if (mParent != null) {
if (mParent != null) { mParent.invalidate();
mParent.invalidate();
}
} }
mFinalVisibilitySet = true;
} }
if (!mIsForcedVisibility && mParent != null) { }
// Layout is allowed now that the View is in its final state // Layout is allowed now that the View is in its final state
mParent.suppressLayout(false); suppressLayout(false);
} }
// Do this only once
mEnded = true; private void suppressLayout(boolean suppress) {
if (mLayoutSuppressed != suppress && mParent != null && !mIsForcedVisibility) {
mLayoutSuppressed = suppress;
mParent.suppressLayout(suppress);
} }
} }
} }