Skip to main content

Modifier 效能 Draw 啥比較好:drawBehind , drawWithContent

Compose 的自訂繪圖是效能殺手。每次畫面重組,你的繪圖邏輯就得重跑一次,FPS 隨時可能崩盤。

1. Modifier.drawBehind:背景板

它會先讓你畫圖,然後才把元件內容(文字、圖片)畫上去。

  • 比喻: 先在牆上塗鴉,再把畫框掛上去。
  • 用途: 畫簡單的背景或裝飾。

2. Modifier.drawWithContent

它把繪製主導權交給你,你必須手動呼叫 drawContent()。你能在內容前後都畫圖。

  • 比喻: 攝影師,能決定先加濾鏡再拍照,或拍完照再加浮水印。
  • 用途: 做內容遮罩、漸層或添加邊框。

3. Modifier.drawWithCache

這是前兩者的效能進化版。只要元件尺寸或你指定的狀態沒變,它就會直接用快取好的繪圖結果,而不是傻傻地重算一次。

  • 比喻: 餐廳預先做好一道功夫菜,客人點了直接上,不用等廚師現做。
  • 用途: 任何涉及複雜計算、建立 Shader 或 Path 的繪圖。

  • 簡單背景? 用 drawBehind。
  • 要疊加內容? 用 drawWithContent。
  • 繪圖邏輯稍微複雜? 一律用 drawWithCache 包起來! 這是避免 App 卡頓的保命符。