diff options
| -rw-r--r-- | core/java/android/transition/ArcMotion.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/core/java/android/transition/ArcMotion.java b/core/java/android/transition/ArcMotion.java index da1483499220..172c8376c8cc 100644 --- a/core/java/android/transition/ArcMotion.java +++ b/core/java/android/transition/ArcMotion.java @@ -216,7 +216,13 @@ public class ArcMotion extends PathMotion { boolean isMovingUpwards = startY > endY; - if ((Math.abs(deltaX) < Math.abs(deltaY))) { + if (deltaY == 0) { + ex = dx; + ey = dy + (Math.abs(deltaX) * 0.5f * mMinimumHorizontalTangent); + } else if (deltaX == 0) { + ex = dx + (Math.abs(deltaY) * 0.5f * mMinimumVerticalTangent); + ey = dy; + } else if ((Math.abs(deltaX) < Math.abs(deltaY))) { // Similar triangles bfa and bde mean that (ab/fb = eb/bd) // Therefore, eb = ab * bd / fb // ab = hypotenuse @@ -254,7 +260,7 @@ public class ArcMotion extends PathMotion { float maximumArcDist2 = midDist2 * mMaximumTangent * mMaximumTangent; float newArcDistance2 = 0; - if (arcDist2 < minimumArcDist2) { + if (arcDist2 != 0 && arcDist2 < minimumArcDist2) { newArcDistance2 = minimumArcDist2; } else if (arcDist2 > maximumArcDist2) { newArcDistance2 = maximumArcDist2; |