summaryrefslogtreecommitdiff
path: root/core/java/android/transition/Fade.java
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2016-02-04 15:24:30 -0800
committerGeorge Mount <mount@google.com>2016-02-08 20:33:49 +0000
commit5affef077316e73337eb42a098a126b01d20568e (patch)
tree8c936e29aa7ccd7531a4566ce00ca269d0b3da5d /core/java/android/transition/Fade.java
parent95728a5db6595e473acf8f428f238afc2fdbbe80 (diff)
Fix Fade transition interrupt.
Bug 26963113 When a Fade transition is interrupted and reversed, the View started the animation from the beginning. This change captures the previous transitionAlpha and starts the animation from the previous alpha state. Change-Id: I801fe9ade6af4cf8446838e231bdc71841668a18 (cherry picked from commit 3cf9fa3db0231d035142c27992818d8f7827ac3e)
Diffstat (limited to 'core/java/android/transition/Fade.java')
-rw-r--r--core/java/android/transition/Fade.java37
1 files changed, 21 insertions, 16 deletions
diff --git a/core/java/android/transition/Fade.java b/core/java/android/transition/Fade.java
index 287c69608b8b..b2e8d3351028 100644
--- a/core/java/android/transition/Fade.java
+++ b/core/java/android/transition/Fade.java
@@ -57,9 +57,9 @@ import android.view.ViewGroup;
* tag <code>fade</code>, along with the standard
* attributes of {@link android.R.styleable#Fade} and
* {@link android.R.styleable#Transition}.</p>
-
*/
public class Fade extends Visibility {
+ static final String PROPNAME_TRANSITION_ALPHA = "android:fade:transitionAlpha";
private static boolean DBG = Transition.DBG && false;
@@ -105,6 +105,13 @@ public class Fade extends Visibility {
setMode(fadingMode);
}
+ @Override
+ public void captureStartValues(TransitionValues transitionValues) {
+ super.captureStartValues(transitionValues);
+ transitionValues.values.put(PROPNAME_TRANSITION_ALPHA,
+ transitionValues.view.getTransitionAlpha());
+ }
+
/**
* Utility method to handle creating and running the Animator.
*/
@@ -119,7 +126,6 @@ public class Fade extends Visibility {
}
final FadeAnimatorListener listener = new FadeAnimatorListener(view);
anim.addListener(listener);
- anim.addPauseListener(listener);
addListener(new TransitionListenerAdapter() {
@Override
public void onTransitionEnd(Transition transition) {
@@ -138,18 +144,28 @@ public class Fade extends Visibility {
Log.d(LOG_TAG, "Fade.onAppear: startView, startVis, endView, endVis = " +
startView + ", " + view);
}
- return createAnimation(view, 0, 1);
+ float startAlpha = 0;
+ if (startValues != null) {
+ startAlpha = (Float) startValues.values.get(PROPNAME_TRANSITION_ALPHA);
+ if (startAlpha == 1) {
+ startAlpha = 0;
+ }
+ }
+ return createAnimation(view, startAlpha, 1);
}
@Override
public Animator onDisappear(ViewGroup sceneRoot, final View view, TransitionValues startValues,
TransitionValues endValues) {
- return createAnimation(view, 1, 0);
+ float startAlpha = 1;
+ if (startValues != null) {
+ startAlpha = (Float) startValues.values.get(PROPNAME_TRANSITION_ALPHA);
+ }
+ return createAnimation(view, startAlpha, 0);
}
private static class FadeAnimatorListener extends AnimatorListenerAdapter {
private final View mView;
- private float mPausedAlpha = -1;
private boolean mLayerTypeChanged = false;
public FadeAnimatorListener(View view) {
@@ -171,16 +187,5 @@ public class Fade extends Visibility {
mView.setLayerType(View.LAYER_TYPE_NONE, null);
}
}
-
- @Override
- public void onAnimationPause(Animator animator) {
- mPausedAlpha = mView.getTransitionAlpha();
- mView.setTransitionAlpha(1);
- }
-
- @Override
- public void onAnimationResume(Animator animator) {
- mView.setTransitionAlpha(mPausedAlpha);
- }
}
}