summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2015-07-06 17:25:44 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-07-06 17:25:46 +0000
commit20f71891c4ae420398b96cc6a77f0c43316e6717 (patch)
treeb7756c26f168dc59437d69090f19f4594c064dc1 /core/java
parentd369d074f5bdbcc9229bf52e12f3bde025cf41cd (diff)
parenta7478ab9a7d36fbd8a0adaada613dff2a9fe77b4 (diff)
downloadframeworks_base-20f71891c4ae420398b96cc6a77f0c43316e6717.zip
frameworks_base-20f71891c4ae420398b96cc6a77f0c43316e6717.tar.gz
frameworks_base-20f71891c4ae420398b96cc6a77f0c43316e6717.tar.bz2
Merge "Fix Fade out during Activity Transition." into mnc-dev
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/transition/Visibility.java56
1 files changed, 24 insertions, 32 deletions
diff --git a/core/java/android/transition/Visibility.java b/core/java/android/transition/Visibility.java
index f9dd7eb..e711812 100644
--- a/core/java/android/transition/Visibility.java
+++ b/core/java/android/transition/Visibility.java
@@ -21,14 +21,11 @@ import com.android.internal.R;
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.animation.Animator.AnimatorPauseListener;
-import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
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
@@ -507,7 +504,8 @@ public abstract class Visibility extends Transition {
private final int mFinalVisibility;
private final ViewGroup mParent;
- private boolean mEnded;
+ private boolean mLayoutSuppressed;
+ private boolean mFinalVisibilitySet = false;
boolean mCanceled = false;
public DisappearListener(View view, int finalVisibility, boolean isForcedVisibility) {
@@ -515,10 +513,8 @@ public abstract class Visibility extends Transition {
this.mIsForcedVisibility = isForcedVisibility;
this.mFinalVisibility = finalVisibility;
this.mParent = (ViewGroup) view.getParent();
- if (!isForcedVisibility && mParent != null) {
- // Prevent a layout from including mView in its calculation.
- mParent.suppressLayout(true);
- }
+ // Prevent a layout from including mView in its calculation.
+ suppressLayout(true);
}
@Override
@@ -542,12 +538,10 @@ public abstract class Visibility extends Transition {
@Override
public void onAnimationRepeat(Animator animation) {
-
}
@Override
public void onAnimationStart(Animator animation) {
-
}
@Override
@@ -562,37 +556,35 @@ public abstract class Visibility extends Transition {
@Override
public void onTransitionPause(Transition transition) {
- if (mParent != null && !mIsForcedVisibility) {
- mParent.suppressLayout(false);
- }
+ suppressLayout(false);
}
@Override
public void onTransitionResume(Transition transition) {
- if (mParent != null && !mIsForcedVisibility) {
- mParent.suppressLayout(true);
- }
+ suppressLayout(true);
}
private void hideViewWhenNotCanceled() {
- if (!mEnded) {
- if (!mCanceled) {
- if (mIsForcedVisibility) {
- mView.setTransitionAlpha(0);
- } else {
- // Recreate the parent's display list in case it includes mView.
- mView.setTransitionVisibility(mFinalVisibility);
- if (mParent != null) {
- mParent.invalidate();
- }
+ if (!mCanceled) {
+ if (mIsForcedVisibility) {
+ mView.setTransitionAlpha(0);
+ } else if (!mFinalVisibilitySet) {
+ // Recreate the parent's display list in case it includes mView.
+ mView.setTransitionVisibility(mFinalVisibility);
+ if (mParent != null) {
+ mParent.invalidate();
}
+ mFinalVisibilitySet = true;
}
- 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;
+ }
+ // Layout is allowed now that the View is in its final state
+ suppressLayout(false);
+ }
+
+ private void suppressLayout(boolean suppress) {
+ if (mLayoutSuppressed != suppress && mParent != null && !mIsForcedVisibility) {
+ mLayoutSuppressed = suppress;
+ mParent.suppressLayout(suppress);
}
}
}