Android中View的绘制过程 onMeasure方法简述 附有自定义View例子

 

Android中View的绘制过程 onMeasure方法简述 附有自定义View例子

 

AndroidView的绘制过程

  当Activity获得焦点时,它将被要求绘制自己的布局,Android framework将会处理绘制过程,Activity只需提供它的布局的根节点。

  绘制过程从布局的根节点开始,从根节点开始测量和绘制整个layout tree。

  每一个ViewGroup 负责要求它的每一个孩子被绘制,每一个View负责绘制自己。

  因为整个树是按顺序遍历的,所以父节点会先被绘制,而兄弟节点会按照它们在树中出现的顺序被绘制。

  

  绘制是一个两遍(two pass)的过程:一个measure pass和一个layout pass。

  测量过程(measuring pass)是在measure(int, int)中实现的,是从树的顶端由上到下进行的。

  在这个递归过程中,每一个View会把自己的dimension specifications传递下去。

  在measure pass的最后,每一个View都存储好了自己的measurements,即测量结果。

 

  第二个是布局过程(layout pass),它发生在pan style="fontWpan/android/view/View.html#measure(int, int)">measure(int, int)ize现的,是pa n style="font-size: 15px;"> ; font-size: 18pt;">Android中View的绘制过程 谺寸w may not use this file excep< in roupliar: sheth the Licens. * Yg> may obtain a ropy of the Licens at * * 宋体; mso-ascii-ft;">Androi8pan> "> decorAndroi8pan>ble law or agred to in writing, ly: wa < * di是ibutd 个er the Licens is di是ibutd orel= "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, eether express or iuplied. * See the Licens for the 行的宋uage governpan>Androi8pan>Android中V">p:age 宋体; mso-ascii-ft;">Androispan>Androi8pan>Androi8pan>iuport to get access to th /rs resources, lir: sthis="b宋体; mso-ascii-ft;">Androi8pan>Androi8pan>Android中V">nuport 宋体; mso-ascii-ft;">Androispan>Android中V">nuport 宋体; mso-ascii-ft;">Androispan>Android中V">nuport 宋体; mso-ascii-ft;">Androispan>Android中V">nuport 宋体; mso-ascii-ft;">Androispan>Android中V">nuport 宋体; mso-ascii-ft;">Androispan>Android中V">nuport 宋体; mso-ascii-ft;">Androispan>Android中V">nuport 宋体; mso-ascii-ft;">Androispan>Androi8pan>Androi8pan> Label"fon * is usd to draw siuple taxt >Androi8pan>Android中V">pubs"/droid/v nt-size: 18pt;">Android中V">ainCodroid/v Label"fon nt-size: 18pt;">Android中V">axtends