我正在實施必須從磁盤加載Bitmap
的自定義ImageView
。 Bitmap
應該完全按比例縮放,其寬度必須等於父級佈局已分配給我的ImageView
的最終寬度,並且計算高度以保持寬高比。處理依賴於「視圖」的維度的大量操作
所以,問題是什麼是View
生命週期中適當的地方放置取決於View
的尺寸在完成佈局後的大規模操作?
(我想保持它的簡單,並沒有使用線程,但是。)
- 最有可能這是一個壞主意,把這些代碼在
onDraw()
方法, 因爲它應儘可能高效可能。另一方面,我的ImageView
不太可能調整大小,所以它只會殺死 的第一個onDraw()
的性能,並且不會影響任何後續的 調用onDraw()
。所以我不確定這個選項。 - 我可以把它放在
onLayout(boolean changed, int l, int t, int r, int b)
的末尾執行我的 重碼if (changed == true)
。這是一個好主意嗎? - 我看到的第三個選項是在
onSizeChanged()
回調中執行。 我唯一關心的是這個回調是否爲保證爲 每個實際視圖的尺寸變化只調用一次。我傾向於使用 這個選項,因爲在我的測試中它工作正常。
有人可以對此有所瞭解嗎?
請記住,我需要讓它在每次執行''View'時不會執行一次,但是一旦執行實際大小change_,所以製作一個'view.post()'似乎就不在這裏。 –
哦。然後使用'onSizeChanged()'方法將是一個更好的選擇。 – Bob
好的,從你提供的鏈接可以推斷出'onSizeChanged()'不能保證只在每個實際'View'的大小改變時被調用一次。那麼如何處理呢?在這種情況下,比較舊的和新的w \ h濾除多個相同大小的呼叫是否正確? –