前言
2020年2月22.距离新年已经过去了大半个月了,依旧的出不了门,依旧的躲在家里一日三餐,依旧的在家办公,也不知道下周会不会复工,再次汇总手中各种保存整理的笔记
相关内容后续GitHub更新,想冲击金三银四的小伙伴可以找找看看,欢迎star
(顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找)
https://github.com/xiangjiana/Android-MS
更多完整项目下载。未完待续。源码。图文知识后续上传github。
可以点击关于我自行查看
一、View绘制的流程框架
View的绘制是从上往下一层层迭代下来的。DecorView
–>ViewGroup
(— >ViewGroup
)–>View
,按照这个流程从上往下,依次measure
(测量),layout
(布 局),draw
(绘制)
二、Measure流程
顾名思义,就是测量每个控件的大小。
调用measure()
方法,进行一些逻辑处理,然后调用onMeasure()
方法,在其中调用 setMeasuredDimension()
设定View的宽高信息,完成View的测量操作。
public final void measure(int widthMeasureSpec, int heightMeasur eSpec) {
}
measure()
方法中,传入了两个参数 widthMeasureSpec, heightMeasureSpec
表示 View的宽高的一些信息。
protected void onMeasure(int widthMeasureSpec, int heightMeasure Spec) {
setMeasuredDimension(getDefaultSize(getSuggestedMinimumW idth(), widthMeasureSpec),
getDefaultSize(getSuggestedMinimumHeight(), heig htMeasureSpec));
}
由上述流程来看Measure
流程很简单,关键点是在于widthMeasureSpec
, heightMeasu