Skip to content

Instantly share code, notes, and snippets.

@bariskarapinar
Created October 15, 2019 14:57
Show Gist options
  • Save bariskarapinar/f6f28637d79c6ddc2444a1e41fc9bd65 to your computer and use it in GitHub Desktop.
Save bariskarapinar/f6f28637d79c6ddc2444a1e41fc9bd65 to your computer and use it in GitHub Desktop.
package com.example.location_maps;
import android.os.Handler;
import android.os.SystemClock;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Interpolator;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
public class MarkerAnimation {
public static void animateMarkerToGB(final Marker marker, final LatLng finalPosition, final LatLngInterpolator latLngInterpolator) {
final LatLng startPosition = marker.getPosition();
final Handler handler = new Handler();
final long start = SystemClock.uptimeMillis();
final Interpolator interpolator = new AccelerateDecelerateInterpolator();
final float durationInMs = 2000;
handler.post(new Runnable() {
long elapsed;
float t;
float v;
@Override
public void run() {
// Calculate progress using interpolator
elapsed = SystemClock.uptimeMillis() - start;
t = elapsed / durationInMs;
v = interpolator.getInterpolation(t);
marker.setPosition(latLngInterpolator.interpolate(v, startPosition, finalPosition));
// Repeat till progress is complete.
if (t < 1) {
// Post again 16ms later.
handler.postDelayed(this, 16);
}
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment