Java
关于具体ViewGroup的onMeasure过程这里不做分析,因为每种构造的测量方法不一样,弗成能逐个分析,但在它们的onMeasure琅绫擎的步调是有必定规律的:
2.调用Child的measure办法;
3.调用setMeasuredDimension肯定最终的大年夜小。
View的measure
View的measure过程由其measure办法来完成,measure办法是一个final类型的办法,这意味着子类不克不及重写此办法,在View的measure办法琅绫擎会去调用onMeasure办法,我们这里只要看onMeasure的实现即可,如下:
代码很简单,我们持续看看getDefaultSize办法的实现:
- View.java
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec),
- getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));
- }
- View.java
- public static int getDefaultSize(int size, int measureSpec) {
- int result = size;
- int specMode = MeasureSpec.getMode(measureSpec);
- int specSize = MeasureSpec.getSize(measureSpec);
- switch (specMode) {
- case MeasureSpec.UNSPECIFIED:
- result = size;
- break;
- case MeasureSpec.AT_MOST:
- case MeasureSpec.EXACTLY:
- result = specSize;
- break;
- }
- return result;
- }
Java
大年夜上述代码可以得出,View的宽/高由specSize决定,直接持续View的自定义控件须要重写onMeasure办法并设置wrap_content时的自身大年夜小,不然在构造中应用wrap_content就相当于应用match_parent。
推荐阅读
在处理矢量化数据时,记录中往往话苄很多反复数据,对进一步数据处理带来诸多不便。多余的数据一方面浪费了较多的存储空间,另一方面造成所要表达的图形不但滑或不相符标准。是以要经由过程某种规矩,在包管矢量曲线>>>详细阅读
本文标题:Android View绘制的三大流程
地址:http://www.17bianji.com/lsqh/36843.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示