Note that there are some explanatory texts on larger screens.

plurals
  1. POlive wallpaper, frame animation, lags
    text
    copied!<p>My frame animation lagging. Why is it lagging?</p> <p>Code:</p> <pre><code>public class LiveWallpaperService extends WallpaperService { Bitmap mPic; private final Handler mHandler = new Handler(); @Override public void onCreate() { super.onCreate(); } @Override public void onDestroy() { super.onDestroy(); } @Override public Engine onCreateEngine() { return new CubeEngine(); } class CubeEngine extends Engine { private float mPosY, mPosX; private Matrix mMatrix = new Matrix(); private int k = 1; private boolean mAnime = true; private boolean test; private static final int NUM_RES = 30; private final Runnable mDrawAnim = new Runnable() { public void run() { for (int i = 0; i &lt; 31; i++) { k++; drawFrame(); if (i == 30) { k = 1; } } } }; private boolean mVisible; CubeEngine() { Resources res = getResources(); for (int i = 0; i &lt; NUM_RES; i++) { int id = res.getIdentifier("boot_00" + (100 + (i + 1)), "drawable", "com.example.dxd1"); mPic = BitmapFactory.decodeResource(res, id); } } @Override public void onCreate(SurfaceHolder surfaceHolder) { super.onCreate(surfaceHolder); setTouchEventsEnabled(false); } @Override public void onDestroy() { super.onDestroy(); mHandler.removeCallbacks(mDrawAnim); } @Override public void onVisibilityChanged(boolean visible) { mVisible = visible; if (visible) { drawFrame(); }else { mHandler.removeCallbacks(mDrawAnim); } } @Override public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) { super.onSurfaceChanged(holder, format, width, height); float w = mPic.getWidth(); float h = mPic.getHeight(); float s = width / (float) w; float s2 = height / (float) h; mMatrix.reset(); mMatrix.setScale(s, s2); } @Override public void onSurfaceCreated(SurfaceHolder holder) { super.onSurfaceCreated(holder); } @Override public void onSurfaceDestroyed(SurfaceHolder holder) { super.onSurfaceDestroyed(holder); mVisible = false; mHandler.removeCallbacks(mDrawAnim); } public void updateBG() { if (k == 1) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00101); } if (k == 2) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00102); } if (k == 3) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00103); } if (k == 4) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00104); } if (k == 5) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00105); } if (k == 6) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00106); } if (k == 7) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00107); } if (k == 8) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00108); } if (k == 9) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00109); } if (k == 10) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00110); } if (k == 11) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00111); } if (k == 12) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00112); } if (k == 13) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00113); } if (k == 14) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00114); } if (k == 15) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00115); } if (k == 16) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00116); } if (k == 17) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00117); } if (k == 18) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00118); } if (k == 19) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00119); } if (k == 20) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00120); } if (k == 21) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00121); } if (k == 22) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00122); } if (k == 23) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00123); } if (k == 24) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00124); } if (k == 25) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00125); } if (k == 26) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00126); } if (k == 27) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00127); } if (k == 28) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00128); } if (k == 29) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00129); } if (k == 30) { mPic = BitmapFactory.decodeResource(getResources(), R.drawable.boot_00130); } } void drawFrame() { final SurfaceHolder holder = getSurfaceHolder(); Canvas c = null; c = holder.lockCanvas(); if (c != null) { drawAnim(c); } if (c != null) { holder.unlockCanvasAndPost(c); } // Reschedule the next redraw mHandler.removeCallbacks(mDrawAnim); if (mVisible &amp;&amp; mAnime) { mHandler.postDelayed(mDrawAnim, 50); } } void drawAnim(Canvas c) { updateBG(); c.drawBitmap(mPic, mMatrix, null); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload