Java 有趣的现场壁纸行为

Java 有趣的现场壁纸行为,java,android,surfaceview,live-wallpaper,pixelformat,Java,Android,Surfaceview,Live Wallpaper,Pixelformat,我刚开始用Android制作我的第一张实时壁纸,我注意到一个关于像素格式的有趣行为。如果我使用SurfaceHolder的默认PixelFormat,我的实时壁纸有点滞后。如果我将PixelFormat设置为RGB_565,似乎可以解决此问题。这真的不应该太令人惊讶。奇怪的是,分析显示以两种格式进行渲染所用的时间相同。有人能解释一下这种行为吗 谢谢, 异或 ---编辑--- 如果它有任何帮助,我在画布上渲染。我所做的就是调用drawColor并绘制3条相当简单的抗锯齿路径。其实没什么大不了的。像

我刚开始用Android制作我的第一张实时壁纸,我注意到一个关于
像素格式
的有趣行为。如果我使用
SurfaceHolder
的默认
PixelFormat
,我的实时壁纸有点滞后。如果我将
PixelFormat
设置为
RGB_565
,似乎可以解决此问题。这真的不应该太令人惊讶。奇怪的是,分析显示以两种格式进行渲染所用的时间相同。有人能解释一下这种行为吗

谢谢, 异或

---编辑---
如果它有任何帮助,我在画布上渲染。我所做的就是调用
drawColor
并绘制3条相当简单的抗锯齿路径。其实没什么大不了的。

像素格式应该不是问题。您甚至可以在没有性能问题的情况下设置PixelFormat.RGBA_8888。在某些情况下,此格式有助于减少渐变上的色带


使用动画处理程序可能对简单的情况有好处,但是你应该考虑使用单独的线程来完成这个任务。不久前我准备了简单的。您可以下载整个GitHub项目,并对其进行一些实验。我相信你会有更好的表现。

这是其他原因造成的。您是使用处理程序还是单独的线程进行动画?我使用的是处理程序。我基本上是在复制Cube Live墙纸示例如何使用它。感谢您的回答,但它没有告诉我是什么导致了性能差异。我将查看一下您的模板,看看我能找到什么。请看下面的答案:在查看代码之后,AnimationThread中的SurfaceHolder似乎是在不同步的情况下并发访问的。通常,在更新状态和图形时,SurfaceView将SurfaceHolder用作锁。你能解释一下吗?我可能忽略了一些东西。我使用场景对象来处理同样的事情。好吧,我试着不使用处理程序。也许它会完全避免这个问题。