美文网首页
view绘制:测量过程&measureSpec

view绘制:测量过程&measureSpec

作者: 崽子猪 | 来源:发表于2019-05-31 11:51 被阅读0次

进入View---> measureHierarchy()

measureHierarchy() --- > getRootMeasureSpec()

调用getRootMeasureSpec这个方法来获取它的宽高根的MeasureSpec


getRootMeasureSpec()

MeasureSpec是定义在一个View类当中的一个静态内部类,它其实就是代表了一个限定池

UNSPECIFIED:表示我们的父View不会对子View有任何的约束.这样子View就可以打到我们想要的最大尺寸
EXACTLY:父View为子View指定了一个尺寸,无论子View想要多大都必须在这个尺寸最大值的边界内
AT_MOST:为子View指定了一个最大尺寸,那么就要确保他所有的子子View都在最大范围内

MeasureSpec
measureHierarchy()--->performMeasure() 进行下一步的测量计算

mView 就是 DetorView:

performMeasure
performMeasure() --- > measuer() 看一下具体的算法

这个方法最终会调用一个onMeasure(int , int )方法

measuer measuer
measuer() ---> onMeasure(int , int )

onMeasure()这个方法是可以被覆写的,所以说当我们在自定义View的时候直接覆写这个方法就好了

根据这两个限定好的值去计算View的宽和高
要根据不同的模式进行不同的计算
内部会调用setMeasedDimension()这个方法是测量阶段最终的一个方法,它会得到一个具体的尺寸.

onMeasure

相关文章

网友评论

      本文标题:view绘制:测量过程&measureSpec

      本文链接:https://www.haomeiwen.com/subject/ajfwtctx.html