2011-10-10 116 views
2

我有一個圖形程序,我想操作liveWallpaper ..我經歷了幾個教程,它看起來像它適合模具很好。更改程序爲動態壁紙

所以我開始,但很快我意識到LiveWallpaper不會SurfaceView。

罰款..所以我看.. SurfaceHolder obj = getSurfaceHolder();然後一些方法來處理瓦/表面..

任何人都介意給我快速破敗..我沒有很好的解釋onSurfaceChaanged(),OnVisibilityChanged,OnSurfaceCreated(),OnSurfaceDestroyed。好像一個你得到一個良好的佈局LiveWallpaper你可以只用一個漂亮的通用模板和曲柄時間了..

回答

1

我用下面的代碼來畫壁紙:

void drawFrame() { 
    final SurfaceHolder holder = getSurfaceHolder(); 

    Canvas c = null; 
    try { 
     c = holder.lockCanvas(); 
     if (c != null) { 
      //do your drawing here 
     } 
    } finally { 
     if (c != null) holder.unlockCanvasAndPost(c); 
    } 
} 

使用這個你可以畫在畫布上,因爲你已經習慣了。

我個人不會覆蓋onSurfaceChanged()和onSurfaceDestroyed()。我重寫onSurfaceCreated()來開始繪製。如果LWP變得可見/不可見,則需要onVisibilityChanged()來啓動/停止繪圖。