一直想研究下安卓各種布局控件,FrameLayout是安卓最簡單的界面布局,所以就從FrameLayout講起。
1.屬性。frameLayout繼承ViewGroup,除了擁有ViewGroup的屬性之外,只有一個layout_gravity屬性。看它的內部靜態類LayoutParams:
1 public static class LayoutParams extends MarginLayoutParams { 2 public int gravity = -1;//唯一的屬性
2.繪制過程。首先,它會遍歷所有子view,並且對每個子view進行measure,並記錄下子view的最大寬高,作為自身的尺寸。在這個過程中,如果自身是不確定大小的模式,子view又是MATCH_PARENT屬性的,就需要為這些子view重新測繪。
3.layout過程。FrameLayout對每個子view的layout過程是相同的。它遍歷所有子view,通過子view的gravity屬性進行xy軸偏移量的計算,最后調用child.layout()對子View進行布局。
