Loading core/java/android/transition/Visibility.java +24 −32 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) { Loading @@ -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. mParent.suppressLayout(true); suppressLayout(true); } } } @Override @Override Loading @@ -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 Loading @@ -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 { } else if (!mFinalVisibilitySet) { // 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); } } } } } } Loading Loading
core/java/android/transition/Visibility.java +24 −32 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) { Loading @@ -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. mParent.suppressLayout(true); suppressLayout(true); } } } @Override @Override Loading @@ -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 Loading @@ -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 { } else if (!mFinalVisibilitySet) { // 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); } } } } } } Loading