diff options
-rw-r--r-- | animationlib/src/com/android/app/animation/Interpolators.java | 20 | ||||
-rw-r--r-- | animationlib/src/com/android/app/animation/InterpolatorsAndroidX.java | 20 |
2 files changed, 40 insertions, 0 deletions
diff --git a/animationlib/src/com/android/app/animation/Interpolators.java b/animationlib/src/com/android/app/animation/Interpolators.java index aac4627..d667ada 100644 --- a/animationlib/src/com/android/app/animation/Interpolators.java +++ b/animationlib/src/com/android/app/animation/Interpolators.java @@ -46,6 +46,14 @@ public class Interpolators { public static final Interpolator EMPHASIZED = createEmphasizedInterpolator(); /** + * Complement to {@link #EMPHASIZED}. Used when animating hero movement in two dimensions to + * create a smooth, emphasized, curved movement. + * <br> + * Example usage: Animate y-movement with {@link #EMPHASIZED} and x-movement with this. + */ + public static final Interpolator EMPHASIZED_COMPLEMENT = createEmphasizedComplement(); + + /** * The accelerated emphasized interpolator. Used for hero / emphasized movement of content that * is disappearing e.g. when moving off screen. */ @@ -312,6 +320,18 @@ public class Interpolators { } /** + * Creates a complement to {@link #createEmphasizedInterpolator()} for use when animating in + * two dimensions. + */ + private static PathInterpolator createEmphasizedComplement() { + Path path = new Path(); + path.moveTo(0f, 0f); + path.cubicTo(0.1217f, 0.0462f, 0.15f, 0.4686f, 0.1667f, 0.66f); + path.cubicTo(0.1834f, 0.8878f, 0.1667f, 1f, 1f, 1f); + return new PathInterpolator(path); + } + + /** * Returns a function that runs the given interpolator such that the entire progress is set * between the given bounds. That is, we set the interpolation to 0 until lowerBound and reach * 1 by upperBound. diff --git a/animationlib/src/com/android/app/animation/InterpolatorsAndroidX.java b/animationlib/src/com/android/app/animation/InterpolatorsAndroidX.java index 2ace0a3..6313475 100644 --- a/animationlib/src/com/android/app/animation/InterpolatorsAndroidX.java +++ b/animationlib/src/com/android/app/animation/InterpolatorsAndroidX.java @@ -53,6 +53,14 @@ public class InterpolatorsAndroidX { public static final Interpolator EMPHASIZED = createEmphasizedInterpolator(); /** + * Complement to {@link #EMPHASIZED}. Used when animating hero movement in two dimensions to + * create a smooth, emphasized, curved movement. + * <br> + * Example usage: Animate y-movement with {@link #EMPHASIZED} and x-movement with this. + */ + public static final Interpolator EMPHASIZED_COMPLEMENT = createEmphasizedComplement(); + + /** * The accelerated emphasized interpolator. Used for hero / emphasized movement of content that * is disappearing e.g. when moving off screen. */ @@ -318,6 +326,18 @@ public class InterpolatorsAndroidX { } /** + * Creates a complement to {@link #createEmphasizedInterpolator()} for use when animating in + * two dimensions. + */ + private static PathInterpolator createEmphasizedComplement() { + Path path = new Path(); + path.moveTo(0f, 0f); + path.cubicTo(0.1217f, 0.0462f, 0.15f, 0.4686f, 0.1667f, 0.66f); + path.cubicTo(0.1834f, 0.8878f, 0.1667f, 1f, 1f, 1f); + return new PathInterpolator(path); + } + + /** * Returns a function that runs the given interpolator such that the entire progress is set * between the given bounds. That is, we set the interpolation to 0 until lowerBound and reach * 1 by upperBound. |