Loading core/java/android/transition/Visibility.java +38 −5 Original line number Original line Diff line number Diff line Loading @@ -504,13 +504,20 @@ public abstract class Visibility extends Transition { private final boolean mIsForcedVisibility; private final boolean mIsForcedVisibility; private final View mView; private final View mView; private final int mFinalVisibility; private final int mFinalVisibility; private final ViewGroup mParent; private boolean mEnded; boolean mCanceled = false; boolean mCanceled = false; public DisappearListener(View view, int finalVisibility, boolean isForcedVisibility) { public DisappearListener(View view, int finalVisibility, boolean isForcedVisibility) { this.mView = view; this.mView = view; this.mIsForcedVisibility = isForcedVisibility; this.mIsForcedVisibility = isForcedVisibility; this.mFinalVisibility = finalVisibility; this.mFinalVisibility = finalVisibility; this.mParent = (ViewGroup) view.getParent(); if (!isForcedVisibility && mParent != null) { // Prevent a layout from including mView in its calculation. mParent.suppressLayout(true); } } } @Override @Override Loading Loading @@ -552,13 +559,39 @@ public abstract class Visibility extends Transition { hideViewWhenNotCanceled(); hideViewWhenNotCanceled(); } } @Override public void onTransitionPause(Transition transition) { if (mParent != null && !mIsForcedVisibility) { mParent.suppressLayout(false); } } @Override public void onTransitionResume(Transition transition) { if (mParent != null && !mIsForcedVisibility) { 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 { } else { mView.setVisibility(mFinalVisibility); // Recreate the parent's display list in case it includes mView. mView.setTransitionVisibility(mFinalVisibility); if (mParent != null) { mParent.invalidate(); } } } if (!mIsForcedVisibility && mParent != null) { // Layout is allowed now that the View is in its final state mParent.suppressLayout(false); } } // Do this only once mEnded = true; } } } } } } Loading Loading
core/java/android/transition/Visibility.java +38 −5 Original line number Original line Diff line number Diff line Loading @@ -504,13 +504,20 @@ public abstract class Visibility extends Transition { private final boolean mIsForcedVisibility; private final boolean mIsForcedVisibility; private final View mView; private final View mView; private final int mFinalVisibility; private final int mFinalVisibility; private final ViewGroup mParent; private boolean mEnded; boolean mCanceled = false; boolean mCanceled = false; public DisappearListener(View view, int finalVisibility, boolean isForcedVisibility) { public DisappearListener(View view, int finalVisibility, boolean isForcedVisibility) { this.mView = view; this.mView = view; this.mIsForcedVisibility = isForcedVisibility; this.mIsForcedVisibility = isForcedVisibility; this.mFinalVisibility = finalVisibility; this.mFinalVisibility = finalVisibility; this.mParent = (ViewGroup) view.getParent(); if (!isForcedVisibility && mParent != null) { // Prevent a layout from including mView in its calculation. mParent.suppressLayout(true); } } } @Override @Override Loading Loading @@ -552,13 +559,39 @@ public abstract class Visibility extends Transition { hideViewWhenNotCanceled(); hideViewWhenNotCanceled(); } } @Override public void onTransitionPause(Transition transition) { if (mParent != null && !mIsForcedVisibility) { mParent.suppressLayout(false); } } @Override public void onTransitionResume(Transition transition) { if (mParent != null && !mIsForcedVisibility) { 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 { } else { mView.setVisibility(mFinalVisibility); // Recreate the parent's display list in case it includes mView. mView.setTransitionVisibility(mFinalVisibility); if (mParent != null) { mParent.invalidate(); } } } if (!mIsForcedVisibility && mParent != null) { // Layout is allowed now that the View is in its final state mParent.suppressLayout(false); } } // Do this only once mEnded = true; } } } } } } Loading