Compose 的自訂繪圖是效能殺手。每次畫面重組,你的繪圖邏輯就得重跑一次,FPS 隨時可能崩盤。
1. Modifier.drawBehind:背景板
它會先讓你畫圖,然後才把元件內容(文字、圖片)畫上去。
- 比喻: 先在牆上塗鴉,再把畫框掛上去。
- 用途: 畫簡單的背景或裝飾。
2. Modifier.drawWithContent
它把繪製主導權交給你,你必須手動呼叫 drawContent()。你能在內容前後都畫圖。
- 比喻: 攝影師,能決定先加濾鏡再拍照,或拍完照再加浮水印。
- 用途: 做內容遮罩、漸層或添加邊框。
3. Modifier.drawWithCache
這是前兩者的效能進化版。只要元件尺寸或你指定的狀態沒變,它就會直接用快取好的繪圖結果,而不是傻傻地重算一次。
- 比喻: 餐廳預先做好一道功夫菜,客人點了直接上,不用等廚師現做。
- 用途: 任何涉及複雜計算、建立 Shader 或 Path 的繪圖。
- 簡單背景? 用 drawBehind。
- 要疊加內容? 用 drawWithContent。
- 繪圖邏輯稍微複雜? 一律用 drawWithCache 包起來! 這是避免 App 卡頓的保命符。
—