AutoLayout 代码解读
Reference
AutoLayoutConifg
该类的作用是获取屏幕宽高、AndroidManifest.xml
中的design_width
和design_width
字段的值。
|
|
init(Context context)
获取屏幕宽高。
getMetaData(Context context)
获取AndroidManifest.xml
中位于application
节点下的design_width
和design_width
字段的值。
AutoLayoutHelper
该类的作用是计算属性的值并保存到AutoLayoutInfo
对象中,在需要的时候将AutoLayoutInfo
对象中值替换给对应的属性。
|
|
adjustChildren()
遍历子 View,如果其布局参数是AutoLayoutParams
,则将计算后的属性的值替换给对应的属性。
getAutoLayoutInfo(Context context, AttributeSet attrs)
遍历属性,重新计算属性的值后保存到AutoLayoutInfo
对象中。
AutoLayoutInfo
该类的作用是替换属性的值为计算后的值。
|
|
getAttrFromView(View view, int attrs, int base)
遍历属性,重新计算属性的值并保存。
fillAttrs(View view)
遍历属性,将属性应用到给定的 View 上。
AutoUtils
|
|
getPercentWidth1px()
获取设计图中的1px
在当前设备上的宽度。
getPercentHeight1px()
获取设计图中的1px
在当前设备上的高度。
getPercentWidthSize(int val)
获取基于宽度计算的设计图中的指定的值在当前设备上的值。
getPercentHeightSize(int val)
获取基于高度计算的设计图中的指定的值在当前设备上的值。
getPercentWidthSizeBigger(int val)
获取基于宽度计算的设计图中的指定的值在当前设备上的值,当为0
时,修改为1
。
getPercentHeightSizeBigger(int val)
获取基于高度计算的设计图中的指定的值在当前设备上的值,当为0
时,修改为1
。
AutoAttr
判断是否未设置app:layout_auto_basewidth
或app:layout_auto_baseheight
,如果未设置,则判断该属性是基于宽度还是基于高度计算,并进行相应的计算;如果设置了基于宽度或高度计算,则进行对应的计算。
|
|
attrVal()
该属性在attrs.xml
中对应的值。
defaultBaseWidth()
是否默认依赖于宽度进行百分比计算。
execute(View view, int val)
将属性修改后的值替换给对应的属性。
apply(View view)
计算属性的值并将属性修改后的值替换给对应的属性。
useDefault()
判断是否未设置app:layout_auto_basewidth
或app:layout_auto_baseheight
。
baseWidth()
判断是否设置了app:layout_auto_basewidth
。
contains(int baseVal, int flag)
判断是否对应的标志位是否置为了1
。
getPercentWidthSize()
基于宽度计算百分比的值。
getPercentHeightSize()
基于高度计算百分比的值。
AutoLayoutActivity
继承AutoLayoutActivity
的 Activity 可以使布局实现百分比化。
|
|
onCreateView(String name, Context context, AttributeSet attrs)
替换LinearLayout
为AutoLinearLayout
,替换FrameLayout
为AutoFrameLayout
,替换RelativeLayout
为AutoRelativeLayout
。
AutoRelativeLayout
|
|
generateLayoutParams(AttributeSet attrs)
当父容器添加子 View 时调用。返回内部类LayoutParams
的对象。