summaryrefslogtreecommitdiff
path: root/core/java/android/transition/Fade.java
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2016-02-10 15:14:17 -0800
committerGeorge Mount <mount@google.com>2016-02-10 15:14:17 -0800
commit45feb95c4a18c5da93da72f448003857b6226082 (patch)
tree3273ce8d0eed4dc4edc6f519afd16d8f4fe1aa18 /core/java/android/transition/Fade.java
parent1f3895b9d996b138e96a8faa3356faccada75e18 (diff)
Null check for fade start alpha value.
Bug 27105186 Fade previously hadn't had any values saved over those captured by Visibility. If a Transition merged two Visibility transitions, it could avoid calling captureStartValues for the Fade transition. This change prevents an NPE in that case. The combined transition won't get the intermediate alpha value, but at least it won't crash. Change-Id: I8e5720caafda56b017dfe1cc0b16ebdf246e90c4
Diffstat (limited to 'core/java/android/transition/Fade.java')
-rw-r--r--core/java/android/transition/Fade.java27
1 files changed, 16 insertions, 11 deletions
diff --git a/core/java/android/transition/Fade.java b/core/java/android/transition/Fade.java
index b2e8d3351028..627183f0cf24 100644
--- a/core/java/android/transition/Fade.java
+++ b/core/java/android/transition/Fade.java
@@ -16,8 +16,6 @@
package android.transition;
-import com.android.internal.R;
-
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
@@ -28,6 +26,8 @@ import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
+import com.android.internal.R;
+
/**
* This transition tracks changes to the visibility of target views in the
* start and end scenes and fades views in or out when they become visible
@@ -144,12 +144,9 @@ public class Fade extends Visibility {
Log.d(LOG_TAG, "Fade.onAppear: startView, startVis, endView, endVis = " +
startView + ", " + view);
}
- float startAlpha = 0;
- if (startValues != null) {
- startAlpha = (Float) startValues.values.get(PROPNAME_TRANSITION_ALPHA);
- if (startAlpha == 1) {
- startAlpha = 0;
- }
+ float startAlpha = getStartAlpha(startValues, 0);
+ if (startAlpha == 1) {
+ startAlpha = 0;
}
return createAnimation(view, startAlpha, 1);
}
@@ -157,11 +154,19 @@ public class Fade extends Visibility {
@Override
public Animator onDisappear(ViewGroup sceneRoot, final View view, TransitionValues startValues,
TransitionValues endValues) {
- float startAlpha = 1;
+ float startAlpha = getStartAlpha(startValues, 1);
+ return createAnimation(view, startAlpha, 0);
+ }
+
+ private static float getStartAlpha(TransitionValues startValues, float fallbackValue) {
+ float startAlpha = fallbackValue;
if (startValues != null) {
- startAlpha = (Float) startValues.values.get(PROPNAME_TRANSITION_ALPHA);
+ Float startAlphaFloat = (Float) startValues.values.get(PROPNAME_TRANSITION_ALPHA);
+ if (startAlphaFloat != null) {
+ startAlpha = startAlphaFloat;
+ }
}
- return createAnimation(view, startAlpha, 0);
+ return startAlpha;
}
private static class FadeAnimatorListener extends AnimatorListenerAdapter {