From 50b4b39b31d62bb2d956f567ba98a9396b5d7100 Mon Sep 17 00:00:00 2001 From: vorokami Date: Fri, 17 Jun 2022 17:25:16 +0300 Subject: [PATCH 1/5] added the functionality to change the animation duration... ...for marker splitting/merging effects --- .../maps/android/clustering/view/ClusterRenderer.java | 5 +++++ .../android/clustering/view/DefaultClusterRenderer.java | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java b/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java index 136729de9..83821f905 100644 --- a/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java +++ b/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java @@ -51,6 +51,11 @@ public interface ClusterRenderer { */ void setAnimation(boolean animate); + /** + * Sets the length of the animation. The default duration is 300 milliseconds. + */ + void setAnimationDuration(int animationDuration); + /** * Called when the view is added. */ diff --git a/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java b/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java index 5854486be..cdc2ce2b7 100644 --- a/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java +++ b/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java @@ -81,6 +81,7 @@ public class DefaultClusterRenderer implements ClusterRen private final ClusterManager mClusterManager; private final float mDensity; private boolean mAnimate; + private int mAnimationDuration; private final Executor mExecutor = Executors.newSingleThreadExecutor(); private static final int[] BUCKETS = {10, 20, 50, 100, 200, 500, 1000}; @@ -134,6 +135,7 @@ public class DefaultClusterRenderer implements ClusterRen public DefaultClusterRenderer(Context context, GoogleMap map, ClusterManager clusterManager) { mMap = map; mAnimate = true; + mAnimationDuration = 300; mDensity = context.getResources().getDisplayMetrics().density; mIconGenerator = new IconGenerator(context); mIconGenerator.setContentView(makeSquareTextView(context)); @@ -575,6 +577,11 @@ public void setAnimation(boolean animate) { mAnimate = animate; } + @Override + public void setAnimationDuration(int animationDuration) { + mAnimationDuration = animationDuration; + } + private Set> immutableOf(Set> clusters) { return clusters != null ? Collections.unmodifiableSet(clusters) : Collections.emptySet(); } @@ -1138,6 +1145,7 @@ private AnimationTask(MarkerWithPosition markerWithPosition, LatLng from, LatLng public void perform() { ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); valueAnimator.setInterpolator(ANIMATION_INTERP); + valueAnimator.setDuration(mAnimationDuration); valueAnimator.addUpdateListener(this); valueAnimator.addListener(this); valueAnimator.start(); From 65f3a073c8b0b8bf2da2d3b8c9ac89e38c796bf1 Mon Sep 17 00:00:00 2001 From: Ivan Posazhennikov <56346856+vorokami@users.noreply.github.com> Date: Tue, 28 Jun 2022 14:19:22 +0300 Subject: [PATCH 2/5] int to long Co-authored-by: Sean Barbeau --- .../google/maps/android/clustering/view/ClusterRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java b/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java index 83821f905..8f6858476 100644 --- a/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java +++ b/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java @@ -54,7 +54,7 @@ public interface ClusterRenderer { /** * Sets the length of the animation. The default duration is 300 milliseconds. */ - void setAnimationDuration(int animationDuration); + void setAnimationDuration(long animationDurationMs); /** * Called when the view is added. From 0b6db570761b16a21b2a223136d4b0029f349c0b Mon Sep 17 00:00:00 2001 From: Ivan Posazhennikov <56346856+vorokami@users.noreply.github.com> Date: Tue, 28 Jun 2022 14:20:00 +0300 Subject: [PATCH 3/5] changed comments Co-authored-by: Sean Barbeau --- .../google/maps/android/clustering/view/ClusterRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java b/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java index 8f6858476..c89621f5b 100644 --- a/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java +++ b/library/src/main/java/com/google/maps/android/clustering/view/ClusterRenderer.java @@ -52,7 +52,7 @@ public interface ClusterRenderer { void setAnimation(boolean animate); /** - * Sets the length of the animation. The default duration is 300 milliseconds. + * Sets the length of the animation in milliseconds. */ void setAnimationDuration(long animationDurationMs); From 11c46fc22a73159f1f6fa92dbccc15c1038ae0ba Mon Sep 17 00:00:00 2001 From: vorokami Date: Tue, 28 Jun 2022 15:03:12 +0300 Subject: [PATCH 4/5] changed type of var animationDuration to long and added Javadocs to its setter --- .../android/clustering/view/DefaultClusterRenderer.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java b/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java index cdc2ce2b7..7824c3f9a 100644 --- a/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java +++ b/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java @@ -81,7 +81,7 @@ public class DefaultClusterRenderer implements ClusterRen private final ClusterManager mClusterManager; private final float mDensity; private boolean mAnimate; - private int mAnimationDuration; + private long mAnimationDuration; private final Executor mExecutor = Executors.newSingleThreadExecutor(); private static final int[] BUCKETS = {10, 20, 50, 100, 200, 500, 1000}; @@ -577,8 +577,12 @@ public void setAnimation(boolean animate) { mAnimate = animate; } + /** + * {@inheritDoc} The default duration is 300 milliseconds. + * @param animationDuration long: The length of the animation, in milliseconds. This value cannot be negative. + */ @Override - public void setAnimationDuration(int animationDuration) { + public void setAnimationDuration(long animationDuration) { mAnimationDuration = animationDuration; } From 9045d644e5da7f283f7e18e40118961a5620d2f9 Mon Sep 17 00:00:00 2001 From: vorokami Date: Tue, 28 Jun 2022 19:22:55 +0300 Subject: [PATCH 5/5] added the Ms suffix to animationDuration and mAnimationDuration --- .../clustering/view/DefaultClusterRenderer.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java b/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java index 7824c3f9a..a1cec59a5 100644 --- a/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java +++ b/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java @@ -81,7 +81,7 @@ public class DefaultClusterRenderer implements ClusterRen private final ClusterManager mClusterManager; private final float mDensity; private boolean mAnimate; - private long mAnimationDuration; + private long mAnimationDurationMs; private final Executor mExecutor = Executors.newSingleThreadExecutor(); private static final int[] BUCKETS = {10, 20, 50, 100, 200, 500, 1000}; @@ -135,7 +135,7 @@ public class DefaultClusterRenderer implements ClusterRen public DefaultClusterRenderer(Context context, GoogleMap map, ClusterManager clusterManager) { mMap = map; mAnimate = true; - mAnimationDuration = 300; + mAnimationDurationMs = 300; mDensity = context.getResources().getDisplayMetrics().density; mIconGenerator = new IconGenerator(context); mIconGenerator.setContentView(makeSquareTextView(context)); @@ -579,11 +579,11 @@ public void setAnimation(boolean animate) { /** * {@inheritDoc} The default duration is 300 milliseconds. - * @param animationDuration long: The length of the animation, in milliseconds. This value cannot be negative. + * @param animationDurationMs long: The length of the animation, in milliseconds. This value cannot be negative. */ @Override - public void setAnimationDuration(long animationDuration) { - mAnimationDuration = animationDuration; + public void setAnimationDuration(long animationDurationMs) { + mAnimationDurationMs = animationDurationMs; } private Set> immutableOf(Set> clusters) { @@ -1149,7 +1149,7 @@ private AnimationTask(MarkerWithPosition markerWithPosition, LatLng from, LatLng public void perform() { ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); valueAnimator.setInterpolator(ANIMATION_INTERP); - valueAnimator.setDuration(mAnimationDuration); + valueAnimator.setDuration(mAnimationDurationMs); valueAnimator.addUpdateListener(this); valueAnimator.addListener(this); valueAnimator.start();