summaryrefslogtreecommitdiffstats
path: root/core/java/android/animation
diff options
context:
space:
mode:
authorChet Haase <chet@google.com>2013-03-15 13:48:53 -0700
committerChet Haase <chet@google.com>2013-03-15 13:50:54 -0700
commit2076316ce118f3685f3a28ed0e895b2c3697b191 (patch)
tree6717badc583b25e62d84e760c9a634657992e764 /core/java/android/animation
parent36818c414d5ccd23ea7bb68993b007aee50a8cc6 (diff)
downloadframeworks_base-2076316ce118f3685f3a28ed0e895b2c3697b191.zip
frameworks_base-2076316ce118f3685f3a28ed0e895b2c3697b191.tar.gz
frameworks_base-2076316ce118f3685f3a28ed0e895b2c3697b191.tar.bz2
Log warning when animator detects NaN value
Issue #8350458 Add exception to Animators when NaN detected Change-Id: I926c3f35b661b0bb1d9e3c7c0df55e7513734589
Diffstat (limited to 'core/java/android/animation')
-rw-r--r--core/java/android/animation/KeyframeSet.java17
1 files changed, 15 insertions, 2 deletions
diff --git a/core/java/android/animation/KeyframeSet.java b/core/java/android/animation/KeyframeSet.java
index 6172aab..4026f7f 100644
--- a/core/java/android/animation/KeyframeSet.java
+++ b/core/java/android/animation/KeyframeSet.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
import android.animation.Keyframe.IntKeyframe;
import android.animation.Keyframe.FloatKeyframe;
import android.animation.Keyframe.ObjectKeyframe;
+import android.util.Log;
/**
* This class holds a collection of Keyframe objects and is called by ValueAnimator to calculate
@@ -56,24 +57,36 @@ class KeyframeSet {
} else {
keyframes[0] = (IntKeyframe) Keyframe.ofInt(0f, values[0]);
for (int i = 1; i < numKeyframes; ++i) {
- keyframes[i] = (IntKeyframe) Keyframe.ofInt((float) i / (numKeyframes - 1), values[i]);
+ keyframes[i] =
+ (IntKeyframe) Keyframe.ofInt((float) i / (numKeyframes - 1), values[i]);
}
}
return new IntKeyframeSet(keyframes);
}
public static KeyframeSet ofFloat(float... values) {
+ boolean badValue = false;
int numKeyframes = values.length;
FloatKeyframe keyframes[] = new FloatKeyframe[Math.max(numKeyframes,2)];
if (numKeyframes == 1) {
keyframes[0] = (FloatKeyframe) Keyframe.ofFloat(0f);
keyframes[1] = (FloatKeyframe) Keyframe.ofFloat(1f, values[0]);
+ if (Float.isNaN(values[0])) {
+ badValue = true;
+ }
} else {
keyframes[0] = (FloatKeyframe) Keyframe.ofFloat(0f, values[0]);
for (int i = 1; i < numKeyframes; ++i) {
- keyframes[i] = (FloatKeyframe) Keyframe.ofFloat((float) i / (numKeyframes - 1), values[i]);
+ keyframes[i] =
+ (FloatKeyframe) Keyframe.ofFloat((float) i / (numKeyframes - 1), values[i]);
+ if (Float.isNaN(values[i])) {
+ badValue = true;
+ }
}
}
+ if (badValue) {
+ Log.w("Animator", "Bad value (NaN) in float animator");
+ }
return new FloatKeyframeSet(keyframes);
}