1. 程式人生 > >使用SurfaceView繪製一張圖片。

使用SurfaceView繪製一張圖片。

明明可以使用imageview顯示圖片或者使用自定義View的ondraw()繪製一張圖片,為什麼要用surfaceView這麼複雜的東西去繪製圖片?

  • 因為Android系統是每隔16ms發出VSYNC訊號來進行螢幕的重繪,這個重繪是在主執行緒中的。一旦主執行緒中的繪製任務時長超過16ms,就會出現卡幀現象。(之前專案在一個介面同時顯示時鐘每秒重新整理和文字跑馬燈效果,每次秒數重新整理時便會出現跑馬燈卡頓一下的情況。)後來將時鐘的秒數以SurfaceView實現才解決了文字跑馬燈的卡頓問題。因為SurfaceView的螢幕繪製不是在主執行緒中,所以不會導致主執行緒(UI執行緒)的卡幀現象。而且底層實現了雙緩衝機制,繪製效率高。

  • 所以複雜耗時的繪製任務應該放到使用SurfaceView去繪製,效率高且不影響主執行緒繪製。比如遊戲,視訊渲染。現在我們從簡單的繪製一張圖片做起,瞭解surfaceView的用法。