我有一个图形程序,我想操作liveWallpaper ..我经历了几个教程,它看起来很适合模具。
所以我开始但很快就意识到LiveWallpaper不是SurfaceView。
很好..所以我看.. SurfaceHolder obj = getSurfaceHolder();然后一些处理表面的方法..
有人介意给我快速破解..我对onSurfaceChaanged(),OnVisibilityChanged,OnSurfaceCreated(),OnSurfaceDestroyed没有很好的解释。看起来像是你为LiveWallpaper提供了一个很好的布局,你可以使用一个非常通用的模板并将其发出来......
答案 0 :(得分: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);
}
}
使用此功能,您可以像以前一样在Canvas上绘图。
我个人不会覆盖onSurfaceChanged()和onSurfaceDestroyed()。我重写onSurfaceCreated()以开始绘图。如果LWP变得可见/不可见,则需要onVisibilityChanged()来启动/停止绘图。