diff options
| author | 2018-02-08 15:43:50 +0000 | |
|---|---|---|
| committer | 2018-02-08 15:43:50 +0000 | |
| commit | a20833c06df83e7ec74a267b3578d7f17facd476 (patch) | |
| tree | c391f6fcbf806fc8bd8a70950dd9be8bbb1456cf | |
| parent | 71a24be9846874185475786fcbcdde4ac4fe2c3f (diff) | |
| parent | 575ffb856ec7a91701a79840cad315102eaa0afd (diff) | |
Merge "Fix bug in calculating path in ArcMotion"
| -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; |