From 400ef79b8e40d586f6123aa44dfbf3495156fb20 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Mon, 7 Nov 2016 10:18:55 -0800 Subject: Add safety net if StackView duration would be negative. Bug: 32699754 Change-Id: I00d4b2398fa7f4ab4cdad290a346b0f09c2af242 --- core/java/android/widget/StackView.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/java/android/widget/StackView.java b/core/java/android/widget/StackView.java index 0e99c02cc6aa..1b9055ce33ab 100644 --- a/core/java/android/widget/StackView.java +++ b/core/java/android/widget/StackView.java @@ -1051,6 +1051,11 @@ public class StackView extends AdapterViewAnimator { float d = (float) Math.hypot(viewLp.horizontalOffset, viewLp.verticalOffset); float maxd = (float) Math.hypot(mSlideAmount, 0.4f * mSlideAmount); + if (d > maxd) { + // Because mSlideAmount is updated in onLayout(), it is possible that d > maxd + // if we get onLayout() right before this method is called. + d = maxd; + } if (velocity == 0) { return (invert ? (1 - d / maxd) : d / maxd) * DEFAULT_ANIMATION_DURATION; -- cgit v1.2.3-59-g8ed1b