I want to animate fishes….Following are the steps to be followed:

fish class…

public class Jellyfish {

    public float x;             // x co-ordinate
    public float y;             // y co-ordinate
    public float off;
    ValentineEngine engine;
    Bitmap[] bitmap;
    int currentFrame;          // current frame display..
    long frameTicker;
    int frameNum;           //  no of frame
    // public float mX;
    // public float mY;

    double speedX;        // x co-ordinate speed of animation
    double speedY;        // y co-ordinate speed of animation

    int direction;        //   Direction of animaton

    int[] FPS;       
    int[] images = new int[] { R.drawable.jelly_fish1, R.drawable.jelly_fish2,
            R.drawable.jelly_fish3, R.drawable.jelly_fish4,
            R.drawable.jelly_fish5, R.drawable.jelly_fish6,
            R.drawable.jelly_fish7, R.drawable.jelly_fish8,       

                  //  array of fishes….
            R.drawable.jelly_fish9, R.drawable.jelly_fish10,
            R.drawable.jelly_fish11, R.drawable.jelly_fish12 };

    void init() {
        frameNum = images.length;        // array size
        bitmap = new Bitmap[frameNum];
        FPS = new int[] { 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185 };
    }

    public Jellyfish(Resources res, float x, float y,                                        // constructor calling from your services class
            ValentineEngine valentineEngine, double speedX, double speedY,                   // and getting value of all perameter…
            int direction) {
        this.direction = direction;

        this.speedY = speedY;

        this.speedX = speedX;
        this.engine = valentineEngine;
        init();

        for (int i = 0; i < frameNum; i++) {
            bitmap[i] = BitmapFactory.decodeResource(res, images[i]);
        }

        this.x = x;
        this.y = y;
    }

                /* method to draw fishes on canvas */

    public void doDraw(Canvas canvas) {
        //off = -(engine.width * engine.xOffset) + x;
        canvas.drawBitmap(bitmap[currentFrame],off, y, null);       
    }

            /* method to animate fishes */

        public void animate(long elapsedTime) {
        if (System.currentTimeMillis() > frameTicker + FPS[0]) {
            currentFrame++;
            if (currentFrame >= frameNum) {
                currentFrame = 0;
            }
            frameTicker = System.currentTimeMillis();
            x += speedX * (elapsedTime / 20f);                      // updating X & Y co-ordinate
            y += speedY * (elapsedTime / 20f) * direction;

        }
    }

         /* method to check border when they cross the border */

   public boolean checkBorder() {
        if (direction == -1)
            if (y < 0)

                return true;
            else if (y > engine.height)
                return true;

        return false;
    }
}

/***** in your wallpaper services class*******/

create arraylist

ArrayList<Jellyfish> jellyfish;
jellyfish = new ArrayList<Jellyfish>();

               /*****in animate method  in your wallpaper services class********/

synchronized (jellyfish) {
                if (jellyfish.size() < 3) {
                    /* calling jellyfish constructor */
                    addjellyFish();
                }

                for (int i = 0; i < jellyfish.size(); i++) {
                    if (!jellyfish.get(i).checkBorder()) {
                        /* animate jellyfish */
                        jellyfish.get(i).animate(elapsed);
                    } else {
                        /* fishes is removed when they cross the border */
                        jellyfish.remove(i);
                    }
                }
            }

                  /***** in doDraw method of wallpaper services class********/

  synchronized (jellyfish) {
                for (int i = 0; i < jellyfish.size(); i++) {
                    /* drawing fish on to the canvas */
                    jellyfish.get(i).doDraw(canvas);
                }

            }

/*****  addjelliFish() metod call in animate metod of wallpaper services class********/

 /* jellyfish constructor calling*/

        void addjellyFish() {
            synchronized (jellyfish) {
                jellyfish.add(new Jellyfish(getResources(), (float) getRandom(
                        0, width – 150),                                                // constructor calling of jelly fish class..and pass all perameter
                        (float) getRandom(height – 10, height), this,
                        getRandom(2.23, 2.35), getRandom(2.25, 2.45), -1));
            }
        }

 

-By Sonu Odesi

Android developer