作家
登录

Android View绘制的三大流程

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

 static int getMode(int measureSpec) { 
  •             return (measureSpec & MODE_MASK); 
  •         } 
  •  
  •         //将32位的MeasureSpec解包,返回SpecSize,某种测量模式下的规格大年夜小 
  •         public static int getSize(int measureSpec) { 
  •             return (measureSpec & ~MODE_MASK); 
  •         } 
  •         //... 
  •     }  
  • Java

    MeasureSpec经由过程将SpecMode和SpecSize打包成一个int值来避免过多的对象内存分派,并供给了打包和解包的办法。

    SpecMode有三种类型,每一类都表示特别的含义:

    UNSPECIFIED

    父容器纰谬View有任何限制,要多大年夜就给多大年夜,这种情况一般用于体系内部,表示一种测量的状况;

    EXACTLY

    父容器已经检测出View所需的精确大年夜小,这个时刻View的最终清除就是SpecSize所指定的值。它对应于LayoutParams中的match_parent和具体数置魅这两种模式。

    AT_MOST

    父容器指定了一个可用大年夜小即SpecSize,View的大年夜小不克不及大年夜于这个值,具体是什么值要看不合View的具体实现。它对应于LayoutParams中wrap_content。

    View的MeasureSpec是由父容器的MeasureSpec和本身的LayoutParams决定的,然则对于DecorView来说有点不合,因为它没有父类。在ViewRootImpl中的measureHierarchy办法中有如下一段代码展示了DecorView的MeasureSpec的创建过程,个中desiredWindowWidth和desireWindowHeight是屏幕的尺寸大年夜小:

    ViewGroup的measure

    1. childWidthMeasureSpec = getRootMeasureSpec(desiredWindowWidth, lp.width); 
    2.  
    3. childHeightMeasureSpec = getRootMeasureSpec(desiredWindowHeight, lp.height); 
    4.  
    5. performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);  

    Java

    再看看getRootMeasureSpec办法:

    1. private static int getRootMeasureSpec(int windowSize, int rootDimension) { 
    2.         int measureSpec; 
    3.         switch (rootDimension) { 
    4.  
    5.         case ViewGroup.LayoutParams.MATCH_PARENT: 
    6.             // Window can't resize. Force root view to be windowSize. 
    7.             measureSpec = MeasureSpec.makeMeasureSpec(windowSize, MeasureSpec.EXACTLY); 
    8.             break; 
    9.         case ViewGroup.LayoutParams.WRAP_CONTENT: 
    10.             // Window can resize. Set max size for root 

        推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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