summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-02-08 15:43:50 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-02-08 15:43:50 +0000
commita20833c06df83e7ec74a267b3578d7f17facd476 (patch)
treec391f6fcbf806fc8bd8a70950dd9be8bbb1456cf
parent71a24be9846874185475786fcbcdde4ac4fe2c3f (diff)
parent575ffb856ec7a91701a79840cad315102eaa0afd (diff)
Merge "Fix bug in calculating path in ArcMotion"
-rw-r--r--core/java/android/transition/ArcMotion.java10
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;