看慕課網的視頻,整理了自定義控件的流程,從自定義屬性、測量、佈局、繪製、手勢事件、事件攔截等多個步驟。
1.自定義屬性的聲明與獲取
分析需要的自定義屬性,在res/values/attrs.xml定義聲明,在layout xml文件中進行使用,在view的構造方法中獲取。
2.測量
3種測量模式:exactly、at_most、unspecificed
3.佈局
決定子view的位置,儘可能將onmeasure中一些方法移動到此方法中,
4.繪製onDraw
繪製之線程:ui線程中更新界面用invalidate方法,子線程中更新用postinvalidate方法。
Canvas.draw****,draw多種方法,圓 三角形 貝塞爾函數等,比較多,需要研究
Canvas幾種動畫,translater 、rotate、scale、skew也會用到
paint,該類保存了繪製幾何圖形、文本和位圖的樣式和顏色信息。也就是說我們可以使用Paint保存的樣式和顏色,來繪製圖形、文本和bitmap,這就是Paint的強大之處。
save方法用於臨時保存畫布座標系統的狀態
restore方法可以用來恢復save之後設置的狀態,
5.ontouchevent
觸摸事件處理,手勢事件監聽,包括move、up、down多種事件。
6.onintercepttouchevent
事件攔截,包括父控件攔截子控件事件,子控件要求父控件攔截事件等方法。