美文网首页
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