OSDN Git Service

Fixed transition start delay propagation when duration = 0.
authorGeorge Mount <mount@google.com>
Wed, 30 Apr 2014 23:24:53 +0000 (16:24 -0700)
committerGeorge Mount <mount@google.com>
Thu, 1 May 2014 14:11:52 +0000 (07:11 -0700)
Bug 14443184

Also gave the propagation speed a tweak to make it more
obvious that there is a propagation.

Change-Id: If9dc3172ae6ce7e6a712ccd1b83ebec9bf880bfa

core/java/android/transition/CircularPropagation.java
core/java/android/transition/SidePropagation.java

index 18a3d22..51beb51 100644 (file)
@@ -34,7 +34,7 @@ import android.view.ViewGroup;
 public class CircularPropagation extends VisibilityPropagation {
     private static final String TAG = "CircularPropagation";
 
-    private float mPropagationSpeed = 4.0f;
+    private float mPropagationSpeed = 3.0f;
 
     /**
      * Sets the speed at which transition propagation happens, relative to the duration of the
@@ -91,8 +91,12 @@ public class CircularPropagation extends VisibilityPropagation {
         float maxDistance = distance(0, 0, sceneRoot.getWidth(), sceneRoot.getHeight());
         float distanceFraction = distance/maxDistance;
 
-        return Math.round(transition.getDuration() * directionMultiplier / mPropagationSpeed
-                * distanceFraction);
+        long duration = transition.getDuration();
+        if (duration < 0) {
+            duration = 300;
+        }
+
+        return Math.round(duration * directionMultiplier / mPropagationSpeed * distanceFraction);
     }
 
     private static float distance(float x1, float y1, float x2, float y2) {
index c331945..5d38ac8 100644 (file)
@@ -52,7 +52,7 @@ public class SidePropagation extends VisibilityPropagation {
      */
     public static final int BOTTOM = Slide.BOTTOM;
 
-    private float mPropagationSpeed = 4.0f;
+    private float mPropagationSpeed = 3.0f;
     private int mSide = BOTTOM;
 
     /**
@@ -129,8 +129,12 @@ public class SidePropagation extends VisibilityPropagation {
         float maxDistance = getMaxDistance(sceneRoot);
         float distanceFraction = distance/maxDistance;
 
-        return Math.round(transition.getDuration() * directionMultiplier / mPropagationSpeed
-                * distanceFraction);
+        long duration = transition.getDuration();
+        if (duration < 0) {
+            duration = 300;
+        }
+
+        return Math.round(duration * directionMultiplier / mPropagationSpeed * distanceFraction);
     }
 
     private int distance(int viewX, int viewY, int epicenterX, int epicenterY,