作家
登录

Android View绘制的三大流程

作者: 来源: 2017-08-22 11:05:27 阅读 我要评论

size.... find out how 
  •             // big it should be 
  •             resultSize = View.sUseZeroUnspecifiedMeasureSpec ? 0 : size
  •             resultMode = MeasureSpec.UNSPECIFIED; 
  •         } 
  •         break; 
  •     } 
  •     //noinspection ResourceType 
  •     return MeasureSpec.makeMeasureSpec(resultSize, resultMode); 
  •  
  • Java

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

    ViewGroup在遍历完子View后,须要依正人元素的测量结不雅来决定本身最终的测量大年夜小,并调用setMeasuredDimension办法保存测量宽高值。

    1. setMeasuredDimension(resolveSizeAndState(maxWidth, widthMeasureSpec, childState),heightSizeAndState); 

    Java

    这里调用了resolveSizeAndState来肯定最终的大年夜小,主如果包管测量的大年夜小不克不及跨越父容器的最大年夜残剩空间maxWidth,这里我们看看它琅绫擎的实现:

    1. public static int resolveSizeAndState(int sizeint measureSpec, int childMeasuredState) { 
    2.         final int specMode = MeasureSpec.getMode(measureSpec); 
    3.         final int specSize = MeasureSpec.getSize(measureSpec); 
    4.         final int result; 
    5.         switch (specMode) { 
    6.             case MeasureSpec.AT_MOST: 
    7.                 if (specSize < size) { 
    8.                     result = specSize | MEASURED_STATE_TOO_SMALL; 
    9.                 } else { 
    10.                     result = size
    11.                 } 
    12.                 break; 
    13.             case MeasureSpec.EXACTLY: 
    14.                 result = specSize; 
    15.                 break; 

        推荐阅读

        两种曲线点抽稀算法-Python实现 附代码

      在处理矢量化数据时,记录中往往话苄很多反复数据,对进一步数据处理带来诸多不便。多余的数据一方面浪费了较多的存储空间,另一方面造成所要表达的图形不但滑或不相符标准。是以要经由过程某种规矩,在包管矢量曲线>>>详细阅读


      本文标题:Android View绘制的三大流程

      地址:http://www.17bianji.com/lsqh/36843.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)