最佳化自訂檢視畫面

如果檢視區塊設計完善,可回應手勢並在狀態之間轉換,請務必確保檢視區塊執行速度夠快。為避免播放期間 UI 感覺遲緩或停頓,請確保動畫持續以每秒 60 個影格的速度執行。

加快檢視速度

如要加快檢視畫面速度,請從經常呼叫的常式中移除不必要的程式碼。先從onDraw()開始,因為這項功能的回報率最高。特別是 onDraw() 中的配置,因為配置可能會導致垃圾回收,進而造成延遲。在初始化期間或動畫之間配置物件。動畫執行時,請勿進行任何配置。

除了讓 onDraw() 更精簡,也請盡量減少呼叫次數。對 onDraw() 的大多數呼叫都是對 invalidate() 的呼叫結果,因此請消除對 invalidate() 的不必要呼叫。

另一項非常耗費資源的作業是遍歷版面配置。當檢視區塊呼叫 requestLayout() 時,Android UI 系統會掃遍整個檢視區塊階層,找出每個檢視區塊需要的大小。如果發現有衝突的評估結果,系統可能會多次遍歷階層。UI 設計師有時會建立巢狀 ViewGroup 物件的深層階層。這些深層檢視區塊階層會導致效能問題,因此請盡可能簡化檢視區塊階層。

如果 UI 較為複雜,請考慮編寫自訂 ViewGroup 來執行版面配置。與內建檢視區塊不同,自訂檢視區塊可針對子項的大小和形狀做出應用程式專屬的假設,因此不必遍歷子項來計算測量值。

舉例來說,如果您有自訂 ViewGroup,但該 ViewGroup 不會調整自身大小來配合所有子項檢視區塊,您就可以避免測量所有子項檢視區塊的額外負荷。如果您使用內建版面配置,以因應各種用途,就無法進行這項最佳化。