2011-10-10 75 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()来启动/停止绘图。