Java
上述代码根据父类的MeasureSpec和自身的LayoutParams创建子元素的MeasureSpec,具体过程同窗们自行分析,最终的创建规矩如下表:

ViewGroup在遍历完子View后,须要依正人元素的测量结不雅来决定本身最终的测量大年夜小,并调用setMeasuredDimension办法保存测量宽高值。
- setMeasuredDimension(resolveSizeAndState(maxWidth, widthMeasureSpec, childState),heightSizeAndState);
Java
这里调用了resolveSizeAndState来肯定最终的大年夜小,主如果包管测量的大年夜小不克不及跨越父容器的最大年夜残剩空间maxWidth,这里我们看看它琅绫擎的实现:
- public static int resolveSizeAndState(int size, int measureSpec, int childMeasuredState) {
- final int specMode = MeasureSpec.getMode(measureSpec);
- final int specSize = MeasureSpec.getSize(measureSpec);
- final int result;
- switch (specMode) {
- case MeasureSpec.AT_MOST:
- if (specSize < size) {
- result = specSize | MEASURED_STATE_TOO_SMALL;
- } else {
- result = size;
- }
- break;
- case MeasureSpec.EXACTLY:
- result = specSize;
- break;
推荐阅读
在处理矢量化数据时,记录中往往话苄很多反复数据,对进一步数据处理带来诸多不便。多余的数据一方面浪费了较多的存储空间,另一方面造成所要表达的图形不但滑或不相符标准。是以要经由过程某种规矩,在包管矢量曲线>>>详细阅读
本文标题:Android View绘制的三大流程
地址:http://www.17bianji.com/lsqh/36843.html
1/2 1

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