Sprite Animation in Android

With this example we are going to demonstrate how to  create and display a Sprite animation in an Android Application.

A Sprite animation is a moving image animation that you will have seen in a gif image. For example imagine a human walking.
To create this kind of animation in Android is simple. In short, to create and use a Sprite Animation you should:

  • create an image with all the movement frames. For simplicity make sure that all the frames have the same size
  • determine the size of the frame.
  • create a bitmap that will contain all the frames
  • give a frame period in milliseconds which will represented the amount of time that each frame will be displayed
  • create an update function that will update the frame that is displayed according to the actual application time

as shown in the code snippets below:

package net.obviam.walking.model;


public class ElaineAnimated {

	private static final String TAG = ElaineAnimated.class.getSimpleName();

	private Bitmap bitmap;		// the animation sequence
	private Rect sourceRect;	// the rectangle to be drawn from the animation bitmap
	private int frameNr;		// number of frames in animation
	private int currentFrame;	// the current frame
	private long frameTicker;	// the time of the last frame update
	private int framePeriod;	// milliseconds between each frame (1000/fps)

	private int spriteWidth;	// the width of the sprite to calculate the cut out rectangle
	private int spriteHeight;	// the height of the sprite

	private int x;				// the X coordinate of the object (top left of the image)
	private int y;				// the Y coordinate of the object (top left of the image)

	public ElaineAnimated(Bitmap bitmap, int x, int y, int width, int height, int fps, int frameCount) {
		this.bitmap = bitmap;
		this.x = x;
		this.y = y;
		currentFrame = 0;
		frameNr = frameCount;
		spriteWidth = bitmap.getWidth() / frameCount;
		spriteHeight = bitmap.getHeight();
		sourceRect = new Rect(0, 0, spriteWidth, spriteHeight);
		framePeriod = 1000 / fps;
		frameTicker = 0l;

	public Bitmap getBitmap() {
		return bitmap;
	public void setBitmap(Bitmap bitmap) {
		this.bitmap = bitmap;
	public Rect getSourceRect() {
		return sourceRect;
	public void setSourceRect(Rect sourceRect) {
		this.sourceRect = sourceRect;
	public int getFrameNr() {
		return frameNr;
	public void setFrameNr(int frameNr) {
		this.frameNr = frameNr;
	public int getCurrentFrame() {
		return currentFrame;
	public void setCurrentFrame(int currentFrame) {
		this.currentFrame = currentFrame;
	public int getFramePeriod() {
		return framePeriod;
	public void setFramePeriod(int framePeriod) {
		this.framePeriod = framePeriod;
	public int getSpriteWidth() {
		return spriteWidth;
	public void setSpriteWidth(int spriteWidth) {
		this.spriteWidth = spriteWidth;
	public int getSpriteHeight() {
		return spriteHeight;
	public void setSpriteHeight(int spriteHeight) {
		this.spriteHeight = spriteHeight;
	public int getX() {
		return x;
	public void setX(int x) {
		this.x = x;
	public int getY() {
		return y;
	public void setY(int y) {
		this.y = y;

	// the update method for Elaine
	public void update(long gameTime) {
		if (gameTime > frameTicker + framePeriod) {
			frameTicker = gameTime;
			// increment the frame
			if (currentFrame >= frameNr) {
				currentFrame = 0;
		// define the rectangle to cut out sprite
		this.sourceRect.left = currentFrame * spriteWidth;
		this.sourceRect.right = this.sourceRect.left + spriteWidth;

	// the draw method which draws the corresponding frame
	public void draw(Canvas canvas) {
		// where to draw the sprite
		Rect destRect = new Rect(getX(), getY(), getX() + spriteWidth, getY() + spriteHeight);
		canvas.drawBitmap(bitmap, sourceRect, destRect, null);
		canvas.drawBitmap(bitmap, 20, 150, null);
		Paint paint = new Paint();
		paint.setARGB(50, 0, 255, 0);
		canvas.drawRect(20 + (currentFrame * destRect.width()), 150, 20 + (currentFrame * destRect.width()) + destRect.width(), 150 + destRect.height(),  paint);

This was an example of how to create Sprite Animations in Android.

Related Article:

Reference: Sprite Animation with Android from our JCG partner Tamas Jano at the “Against The Grain” blog.

Ilias Tsagklis

Ilias is a software developer turned online entrepreneur. He is co-founder and Executive Editor at Java Code Geeks.
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inline Feedbacks
View all comments
Back to top button