應(yīng)該也可以再onLayout計算三角形尺寸吧,應(yīng)該也可以再onDraw畫三角形吧,為什么要在onSizeChanged和dispatchDraw呢?
如題,如果說在onSizeChanged和dispatchDraw是更好的話那么什么情況下用onLayout什么情況下用onSizeChange什么情況下用onDraw什么情況下用dispatchDraw呢
如題,如果說在onSizeChanged和dispatchDraw是更好的話那么什么情況下用onLayout什么情況下用onSizeChange什么情況下用onDraw什么情況下用dispatchDraw呢
2018-08-17
舉報
2018-08-18
ViewPagerIndicator extends LinearLayout而LinearLayout extends ViewGroup
2018-08-18
根據(jù)在網(wǎng)上搜索的答案 已得到了解答
無論是View還是ViewGroup對它們倆的調(diào)用順序都是onDraw()->dispatchDraw()?
但在ViewGroup中,當它有背景的時候就會調(diào)用onDraw()方法,否則就會跳過onDraw()直接調(diào)用dispatchDraw();所以如果要在ViewGroup中繪圖時,往往是重寫dispatchDraw()方法?
在View中,onDraw()和dispatchDraw()都會被調(diào)用的,所以我們無論把繪圖代碼放在onDraw()或者dispatchDraw()中都是可以得到效果的,但是由于dispatchDraw()的含義是繪制子控件,所以原則來上講,在繪制View控件時,我們是重新onDraw()函數(shù)?
所以結(jié)論來了:
在繪制View控件時,需要重寫onDraw()函數(shù),在繪制ViewGroup時,需要重寫dispatchDraw()函數(shù)。