开发者

live wallpaper with images

(sorry for my Englih is not so good... hope you will understand me)

My friend is a really good drawer. I would like to help him to be know as a good drawer by making him a live wallpaper animated with his drawings.

I would like him to draw few frames and use these frames to make a live wallpaper by displaying them one aft开发者_开发问答er the other.

I'm struggling so much to display one picture then wait a bit and display the next one. I'm quite sure that I can't succeed to do it because I don't use the right approach...

This is what I have done until now :

public class Cercle extends WallpaperService
{
public void onCreate() 
{
    super.onCreate();
}

public void onDestroy() 
{
    super.onDestroy();
}

public Engine onCreateEngine() 
{
    return new CercleEngine();
}

class CercleEngine extends Engine 
{
    public Bitmap image1, image2, image3;

    CercleEngine() 
    {       
        image1 = BitmapFactory.decodeResource(getResources(), R.drawable.img1);
        image2 = BitmapFactory.decodeResource(getResources(), R.drawable.img2);
        image3 = BitmapFactory.decodeResource(getResources(), R.drawable.img3); 
    }

    public void onCreate(SurfaceHolder surfaceHolder) 
    {
        super.onCreate(surfaceHolder);
    }

    public void onOffsetsChanged(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels) 
    {
        drawFrame();
    }

    void drawFrame() 
    {
        final SurfaceHolder holder = getSurfaceHolder();

        Canvas c = null;
        try 
        {
            c = holder.lockCanvas();
            if (c != null) 
            {              
                 c.drawBitmap(image1, 0, 0, null);
                 c.drawBitmap(image2, 0, 0, null);
                 c.drawBitmap(image3, 0, 0, null);                   
            }
        } finally 
        {
            if (c != null) holder.unlockCanvasAndPost(c);
        }
    }
}
}

This code just display the pictures too quickly because I don't know how to wait between diplaying pictures...

Can anyone give me some tips or show me some example of another solution ?

Thanks so much !

UPDATE :

I got my problem resolved by adding a Runnable :

private final Runnable drawRunner = new Runnable() 
    {
        @Override
        public void run() {
            drawFrame();
        }

    };

and then by adding :

    handler.removeCallbacks(drawRunner);
        if (visible) 
        {
           handler.postDelayed(drawRunner, 1000); // delay 1 sec
        }

at the end of drawFrame().

Hope this will help someone.


use this open source project to create nice live wallpaper for your friend

link it is read from phone gallery, you can edit it to read from folder in the project pr just use as it is.

or use this link for other live wallpaper project


@Pozinux... I'm a new programmer. I came across this code you have hear. I'm trying to use the code in my project. But I can't get it to work. When I install it to the emulator it doesn't move through its frames. It only shows the last frame. How did you set this up? Or get this to work? Hears how I set it up in my project.

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.service.wallpaper.WallpaperService;

import android.view.SurfaceHolder;

public class WallpaperSer extends WallpaperService {

public void onCreate() 

{
    super.onCreate();
}

public void onDestroy() 
{
    super.onDestroy();
}

public Engine onCreateEngine() 
{
    return new WallpaperSerEngine();
}

class WallpaperSerEngine extends Engine 
{
    public Bitmap image1; 
    public Bitmap image2;
    public Bitmap image3;
    public Bitmap image4;
    public Bitmap image5;
    public Bitmap image6;
    public Bitmap image7;
    public Bitmap image8;
    public Bitmap image9;
    public Bitmap image10;
    public Bitmap image11;
    public Bitmap image12;
    public Bitmap image13;
    public Bitmap image14;
    public Bitmap image15;
    public Bitmap image16;
    public Bitmap image17;
    public Bitmap image18;
    public Bitmap image19;
    public Bitmap image20;

    WallpaperSerEngine() 
    {       
            image1 = BitmapFactory.decodeResource(getResources(), R.drawable.and1);
            image2 = BitmapFactory.decodeResource(getResources(), R.drawable.and2);       
            image3 = BitmapFactory.decodeResource(getResources(), R.drawable.and3); 
            image4 = BitmapFactory.decodeResource(getResources(), R.drawable.and4);
            image5 = BitmapFactory.decodeResource(getResources(), R.drawable.and5);
            image6 = BitmapFactory.decodeResource(getResources(), R.drawable.and6);
            image7 = BitmapFactory.decodeResource(getResources(), R.drawable.and7);
            image8 = BitmapFactory.decodeResource(getResources(), R.drawable.and8);
            image9 = BitmapFactory.decodeResource(getResources(), R.drawable.and9);
            image10 = BitmapFactory.decodeResource(getResources(), R.drawable.and10);
            image11 = BitmapFactory.decodeResource(getResources(), R.drawable.and11);
            image12 = BitmapFactory.decodeResource(getResources(), R.drawable.and12);
            image13 = BitmapFactory.decodeResource(getResources(), R.drawable.and13);
            image14 = BitmapFactory.decodeResource(getResources(), R.drawable.and14);
            image15 = BitmapFactory.decodeResource(getResources(), R.drawable.and15);
            image16 = BitmapFactory.decodeResource(getResources(), R.drawable.and16);
            image17 = BitmapFactory.decodeResource(getResources(), R.drawable.and17);
            image18 = BitmapFactory.decodeResource(getResources(), R.drawable.and18);
            image19 = BitmapFactory.decodeResource(getResources(), R.drawable.and19);
            image20 = BitmapFactory.decodeResource(getResources(), R.drawable.and20);
    }

    public void onCreate(SurfaceHolder surfaceHolder) 
    {
        super.onCreate(surfaceHolder);
    }

    public void onOffsetsChanged(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels) 
    {
        drawFrame();

    }

    void drawFrame() 
    {
        final SurfaceHolder holder = getSurfaceHolder();

        Canvas c = null;
        try 
        {
            c = holder.lockCanvas();
            if (c != null) 
            {              
                 c.drawBitmap(image1, 0, 0, null);
                 c.drawBitmap(image2, 0, 0, null);
                 c.drawBitmap(image3, 0, 0, null);
                 c.drawBitmap(image4, 0, 0, null);
                 c.drawBitmap(image5, 0, 0, null);
                 c.drawBitmap(image6, 0, 0, null);
                 c.drawBitmap(image7, 0, 0, null);
                 c.drawBitmap(image8, 0, 0, null);
                 c.drawBitmap(image9, 0, 0, null);
                 c.drawBitmap(image10, 0, 0, null);
                 c.drawBitmap(image11, 0, 0, null);
                 c.drawBitmap(image12, 0, 0, null);
                 c.drawBitmap(image13, 0, 0, null);
                 c.drawBitmap(image14, 0, 0, null);
                 c.drawBitmap(image15, 0, 0, null);
                 c.drawBitmap(image16, 0, 0, null);
                 c.drawBitmap(image17, 0, 0, null);
                 c.drawBitmap(image18, 0, 0, null);
                 c.drawBitmap(image19, 0, 0, null);
                 c.drawBitmap(image20, 0, 0, null);
            }
        } finally 
        {
            if (c != null) holder.unlockCanvasAndPost(c);
        }
    }
}
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜