2012-06-25 19 views
3

大家好。這是我的第一個Android項目。我正試圖創建一個動態壁紙,從視頻中獲取一系列圖像。每幅圖片的尺寸爲960 x 800.到目前爲止,動態壁紙的作品,但我仍然有問題,我一直無法解決。動態壁紙使用一系列圖像

  1. 設置時,動態壁紙只顯示整個PNG的一部分。我設法讓它滾動瀏覽圖片的寬度,它滾動,但它只顯示整個寬度的一部分。它只是顯示整個圖像的高度的一部分,直到縱向上的圖像的一半,以及橫向上的一部分從上到下。我希望動態壁紙看起來不錯,並在縱向和橫向模式下適合手機的屏幕。

  2. 它的工作原理,但它有點暫停。當我切換屏幕時,它只會繼續工作。在這個問題上更具體的是,當你設置它動畫,但突然停止一半的週期,當你切換屏幕,它繼續工作多一點,這意味着它在序列上稍微提前。並且爲了完成序列並開始它,您需要繼續瀏覽屏幕。

  3. 我希望序列變得更快,就像它是一個視頻。

這裏是我的代碼::

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); 
     } 
    } 
} 
+1

你不使用正確的縮進? –

+0

對於OP:請記住,其他人將閱讀您的代碼,如果格式不正確,您的問題將得不到應有的重視,並且會被忽略! – t0mm13b

+0

我不得不重新格式化它,因爲... – t0mm13b

回答

0

的問題是要創建在updateBG位圖每次()。這是讓它呆滯。