Don't pass invalid/infinite values into setScale()
Bug: 16779614
Change-Id: Ibdda90c1656e3e52ff23c84aeebd9ed32098bdb3
diff --git a/src/com/android/contacts/widget/MultiShrinkScroller.java b/src/com/android/contacts/widget/MultiShrinkScroller.java
index 632bb28..5f8bc14 100644
--- a/src/com/android/contacts/widget/MultiShrinkScroller.java
+++ b/src/com/android/contacts/widget/MultiShrinkScroller.java
@@ -885,13 +885,18 @@
return;
}
- float ratio = (toolbarHeight - mMinimumHeaderHeight)
+ final float ratio = (toolbarHeight - mMinimumHeaderHeight)
/ (float)(mMaximumHeaderHeight - mMinimumHeaderHeight);
final float minimumSize = mInvisiblePlaceholderTextView.getHeight();
- final float bezierOutput = mTextSizePathInterpolator.getInterpolation(ratio);
+ float bezierOutput = mTextSizePathInterpolator.getInterpolation(ratio);
float scale = (minimumSize + (mMaximumHeaderTextSize - minimumSize) * bezierOutput)
/ mMaximumHeaderTextSize;
+ // Clamp to reasonable/finite values before passing into framework. The values
+ // can be wacky before the first pre-render.
+ bezierOutput = (float) Math.min(bezierOutput, 1.0f);
+ scale = (float) Math.min(scale, 1.0f);
+
mLargeTextView.setScaleX(scale);
mLargeTextView.setScaleY(scale);
setInterpolatedTitleMargins(bezierOutput);