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