OnMeasure方法
在绘制View之前,还是说一下系统是如何测量View的,在Android中,我们绘制一个图像之前,需要知道一个View的大小和位置,不然我们将无法绘制图形(如下图,类似于蒙眼作画
).这个过程是在View的函数OnMeasure方法中执行的,最后我们可以 调用SetMeasuredDimension方法来设置测量后的View的大小
MeasureSpec类
在安卓中,系统提供了MeasureSpec类帮助我们测量View的模式和大小.我们可以具体的调用MeasSpec.getMode和MeasureSqec.getSize来获取模式和大小.测量的模式通常可以有以下三种::
EXACTLY:表示设置了精确的值,一般当View设置其宽、高为精确值、match_parent时,ViewGroup会将其设置为EXACTLY;
AT_MOST:表示子布局被限制在一个最大值内,一般当View设置其宽、高为wrap_content时,ViewGroup会将其设置为AT_MOST;
UNSPECIFIED:表示子布局想要多大就多大,一般出现在View的item的heightMode中、ScrollView的childView的heightMode中;此种模式比较少见。