live wallpaper with images

11,617

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

Share:
11,617
Pozinux
Author by

Pozinux

I though that a good way of learning was to participate to this very nice community as much as I can. Please pardon my rusty english because I'm French. ^^

Updated on June 04, 2022

Comments

  • Pozinux
    Pozinux almost 2 years

    (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 after 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.