diff options
author | Chet Haase <chet@google.com> | 2013-03-15 13:48:53 -0700 |
---|---|---|
committer | Chet Haase <chet@google.com> | 2013-03-15 13:50:54 -0700 |
commit | 2076316ce118f3685f3a28ed0e895b2c3697b191 (patch) | |
tree | 6717badc583b25e62d84e760c9a634657992e764 /core/java/android/animation | |
parent | 36818c414d5ccd23ea7bb68993b007aee50a8cc6 (diff) | |
download | frameworks_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.java | 17 |
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); } |