Well hello everybody. This is my first ever android project. I am trying to create a live wallpaper with a sequence of images gotten from a video. The dimensions of each image is 960 x 800. So far the live wallpaper works, but I still have issues I have not been able to solve.
When set, the live wallpaper only shows part of the whole png. I managed to get it to scroll through the images width, and it scrolls but it only shows part of the whole width. And it is only show part of the whole image's height, about until half of the image on portrait, and just a piece of it from top to bottom on landscape. I'd like the live wallpaper to look nice and get to fit the phone's screen on both portrait and landscape mode.
It works, but it kind of pauses. And it only keeps working when I switch screens. To be more specific in this issue is that when you set it it animates, but stops suddenly by half of the cycle, when you switch screens it keeps working a little bit more, meaning it advances a little on the sequence. And in order to finish the sequence and to start it over you need to keep going through the screens.
I would like the sequence to go faster, like it was a video.
HERE IS MY CODE::
package com.livewallpaper.mw3lwp;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Handler;
import android.service.wallpaper.WallpaperService;
import android.view.SurfaceHolder;
public class ModernWarfare3LiveWallpaper extends WallpaperService {
private final Handler handler = new Handler();
public float mxOffset;
public void onCreate()
{
super.onCreate();
}
public void onDestroy()
{
super.onDestroy();
}
public Engine onCreateEngine()
{
return new CercleEngine();
}
class CercleEngine extends Engine {
private final Runnable drawRunner = new Runnable(){
@Override
public void run() {
updateBG();
drawFrame();
}
};
public Bitmap myBg;
int bgcycle = 0;
public void updateBG() {
if(bgcycle==50){
bgcycle=0;
}
switch (bgcycle) {
case 0: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n01); break;
case 1: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n02); break;
case 2: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n03); break;
case 3: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n04); break;
case 4: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n05); break;
case 5: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n06); break;
case 6: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n07); break;
case 7: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n08); break;
case 8: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n09); break;
case 9: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n10); break;
case 10: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n11); break;
case 11: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n12); break;
case 12: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n13); break;
case 13: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n14); break;
case 14: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n15); break;
case 15: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n16); break;
case 16: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n17); break;
case 17: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n18); break;
case 18: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n19); break;
case 19: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n20); break;
case 20: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n21); break;
case 21: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n22); break;
case 22: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n23); break;
case 23: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n24); break;
case 24: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n25); break;
case 25: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n26); break;
case 26: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n27); break;
case 27: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n28); break;
case 28: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n29); break;
case 29: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n30); break;
case 30: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n31); break;
case 31: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n32); break;
case 32: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n33); break;
case 33: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n34); break;
case 34: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n35); break;
case 35: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n36); break;
case 36: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n37); break;
case 37: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n38); break;
case 38: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n39); break;
case 39: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n40); break;
case 40: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n41); break;
case 41: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n42); break;
case 42: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n43); break;
case 43: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n44); break;
case 44: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n45); break;
case 45: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n46); break;
case 46: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n47); break;
case 47: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n48); break;
case 48: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n49); break;
case 49: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n50); break;
case 50: myBg = BitmapFactory.decodeResource(getResources(),R.drawable.n51); break;
}
bgcycle++;
}
CercleEngine()
{
updateBG();
}
public void onCreate(SurfaceHolder surfaceHolder)
{
super.onCreate(surfaceHolder);
}
@Override
public void onOffsetsChanged(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels)
{
super.onOffsetsChanged(mxOffset, yOffset, xStep, yStep, xPixels, yPixels);
mxOffset = xPixels;
drawFrame();
}
void drawFrame()
{
final SurfaceHolder holder = getSurfaceHolder();
Canvas c = null;
try
{
c = holder.lockCanvas();
if (c != null)
{
c.save();
c.translate((float) mxOffset, 0f);
if(myBg != null) {
updateBG();
c.drawBitmap(myBg, 0, 0, null);
}
c.restore();
//updateBG();
//c.drawBitmap(myBg, 0, 0, null);
}
}finally{
if (c != null) holder.unlockCanvasAndPost(c);
}
handler.removeCallbacks(drawRunner);
}
}
}