2013-12-24 43 views
0

我刚开始制作一些我的第一个Android动态壁纸,我注意到一个有趣的行为PixelFormat。如果我使用SurfaceHolder的默认PixelFormat,我的动态壁纸有点滞后。如果我将PixelFormat设置为RGB_565它似乎可以解决此问题。这真的不应该太令人惊讶。奇怪的是,剖析显示,这两种格式的渲染都花费同样的时间。任何人都可以解释此行为。有趣的动态壁纸行为

感谢, 异或

---编辑--- 如果它的任何帮助,我呈现在画布上。我所做的只是拨打drawColor并画出3个相当简单的反锯齿路径。并不是很重要。

+0

其他原因是这样的。你正在使用处理程序或单独的线程动画? –

+0

我正在使用处理程序。我基本上复制了Cube Live Wallpaper示例如何使用它。 –

回答

1

PixelFormat不应该是一个问题。你应该甚至可以设置PixelFormat.RGBA_8888而不会出现性能问题。在某些情况下,此格式对于减少渐变上的色带非常有用。

使用处理程序进行动画可能适用于简单情况,但您应该考虑为此任务使用单独的线程。前段时间我准备了简单的live wallpaper template。您可以下载GitHub的整个项目并尝试一下。我相信你会有更好的表现。

+0

感谢您的回答,但它不会告诉我是什么导致性能差异。我会看看你的模板,看看我能找到什么 –

+0

看到这个答案︰http://stackoverflow.com/questions/8829943/how-to-find-the-best-pixelformat-for-an-android- surfaceview –

+0

看看你的代码后,它看起来你的SurfaceHolder在AnimationThread中被同时访问而没有同步。通常,SurfaceView在更新状态和图形时使用SurfaceHolder作为锁。你能解释一下吗?我可能忽略了一些东西。 –