Frame By Frame Animation: Frame by frame animation is an animation in which sequence of images replaces on image view.
This animation supports on image view in android.
Problem: How to do same animation on google map location marker ?
Impediment: addMarker() method of GoogleMap can not replace icon on existing marker.
Solution: To resolve this we can use setIcon() method of Marker Class which allows to replace icon over existing marker.
Let’s have a look at the code snippet for animation.
Handler handler = new Handler();
public static int intMarkerNumber = 1;
public final int REPEAT_SECONDS = 91;
//33 images will replace in total 3 seconds on current location animation.
public void markerAnimation(final Marker marker) {
handler.postDelayed(new Runnable() {
public void run() {
try {
switch (intMarkerNumber) {
case 1:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_1));
++intMarkerNumber;
break;
case 2:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_2));
++intMarkerNumber;
break;
case 3:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_3));
++intMarkerNumber;
break;
case 4:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_4));
++intMarkerNumber;
break;
case 5:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_5));
++intMarkerNumber;
break;
case 6:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_6));
++intMarkerNumber;
break;
case 7:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_7));
++intMarkerNumber;
break;
case 8:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_8));
++intMarkerNumber;
break;
case 9:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_9));
++intMarkerNumber;
break;
case 10:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_10));
++intMarkerNumber;
break;
case 11:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_11));
++intMarkerNumber;
break;
case 12:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_12));
++intMarkerNumber;
break;
case 13:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_13));
++intMarkerNumber;
break;
case 14:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_14));
++intMarkerNumber;
break;
case 15:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_15));
++intMarkerNumber;
break;
case 16:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_16));
++intMarkerNumber;
break;
case 17:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_17));
++intMarkerNumber;
break;
case 18:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_18));
++intMarkerNumber;
break;
case 19:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_19));
++intMarkerNumber;
break;
case 20:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_20));
++intMarkerNumber;
break;
case 21:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_21));
++intMarkerNumber;
break;
case 22:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_22));
++intMarkerNumber;
break;
case 23:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_23));
++intMarkerNumber;
break;
case 24:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_24));
++intMarkerNumber;
break;
case 25:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_25));
++intMarkerNumber;
break;
case 26:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_26));
++intMarkerNumber;
break;
case 27:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_27));
++intMarkerNumber;
break;
case 28:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_28));
++intMarkerNumber;
break;
case 29:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_29));
++intMarkerNumber;
break;
case 30:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_30));
++intMarkerNumber;
break;
case 31:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_31));
++intMarkerNumber;
break;
case 32:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_32));
++intMarkerNumber;
break;
default:
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.anim_33));
intMarkerNumber = 1;
break;
}
} catch (Exception e) {
e.printStackTrace();
}
handler.postDelayed(this, REPEAT_SECONDS);
}
}, REPEAT_SECONDS);
}
//Note: Don't forget to removeCallback of Handler while leaving activity.
handler.removeCallbacksAndMessages(null);