作家
登录

Android View绘制的三大流程

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

  •             case MeasureSpec.UNSPECIFIED: 
  •             default
  •                 result = size
  •         } 
  •         return result | (childMeasuredState & MEASURED_STATE_MASK); 
  •     }  
  • Java

    关于具体ViewGroup的onMeasure过程这里不做分析,因为每种构造的测量方法不一样,弗成能逐个分析,但在它们的onMeasure琅绫擎的步调是有必定规律的:

    2.调用Child的measure办法;

    3.调用setMeasuredDimension肯定最终的大年夜小。

    View的measure

    View的measure过程由其measure办法来完成,measure办法是一个final类型的办法,这意味着子类不克不及重写此办法,在View的measure办法琅绫擎会去调用onMeasure办法,我们这里只要看onMeasure的实现即可,如下:

    代码很简单,我们持续看看getDefaultSize办法的实现:

    1. View.java 
    2.  
    3.     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    4.         setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec), 
    5.                 getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec)); 
    6.     }  
    1. View.java 
    2.  
    3.     public static int getDefaultSize(int sizeint measureSpec) { 
    4.         int result = size
    5.         int specMode = MeasureSpec.getMode(measureSpec); 
    6.         int specSize = MeasureSpec.getSize(measureSpec); 
    7.  
    8.         switch (specMode) { 
    9.         case MeasureSpec.UNSPECIFIED: 
    10.             result = size
    11.             break; 
    12.         case MeasureSpec.AT_MOST: 
    13.         case MeasureSpec.EXACTLY: 
    14.             result = specSize; 
    15.             break; 
    16.         } 
    17.         return result; 
    18.     } 

    Java

    大年夜上述代码可以得出,View的宽/高由specSize决定,直接持续View的自定义控件须要重写onMeasure办法并设置wrap_content时的自身大年夜小,不然在构造中应用wrap_content就相当于应用match_parent。


      推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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