Android View绘制流程

从根布局的performTraversals()方法开始,Traversal的意思就是遍历,也就是会从上到下遍历整个view树,每个view都有绘制方法绘制自己,viewgroup绘制自己的同时还要负责通知自己子view的绘制

绘制方法:measure--->layou----->draw

measure:

    在ViewGroup中的measureChildren()方法中会遍历测量ViewGroup中所有的View,当View的可见性处于GONE状态时,不对其进行测量

    自定义View时手动处理wrap_content时的情形

    直接继承View的控件需要重写onMeasure方法并设置wrap_content时的自身大小,否则在布局中使        用    wrap_content就相当于使用match_parent。此时,可以在wrap_content的情况下(对应MeasureSpec.AT_MOST)指定内部宽/高(mWidth和mHeight)。

    在activity中获取view高度

    view.post()

layout:

    会通过setFrame方法来设定View的四个顶点的位置,即View在父容器中的位置。然后,会执行到onLayout空方法,子类如果是ViewGroup类型,则重写这个方法,实现ViewGroup中所有View控件布局流程。

你可能感兴趣的:(Android View绘制流程)