2013-12-24 47 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作爲鎖。你能解釋一下嗎?我可能忽略了一些東西。 –