Android WMS——操作View(七)
上一篇文章我们将 view 传递给 ViewRootImpl 进行操作,这里我们主要分析 ViewRootImpl 对 View 进行操作。在正式分析之前我们先来介绍以下 View。
一、View介绍
最开始学习 View 的时候最先分析的是它的布局(LinearLayout、FrameLayout、TableLayout、RelativeLayout、AbsoluteLayout),然后是它的三大方法(measure、layout、draw)。
源码位置:/frameworks/base/core/java/android/view/View.java
1、View绘制&加载
onMeasure
MeasureSpec.EXACTLY 是精确尺寸, 当我们将控件的 layout_width 或 layout_height 指定为具体数值时,或者为 MATCH_PARENT 时,都是控件大小已经确定的情况,都是精确尺寸。
MeasureSpec.AT_MOST 是最大尺寸,当控件的 layout_width 或 layout_height 指定为 WRAP_CONTENT 时 ,控件大小一般随着控件的子空间或内容进行变化,此时控件尺寸只要不超过父控件允许的最大尺寸即可。因此,此时的 mode 是 AT_MOST,size 给出了父控件允许的最大尺寸。
MeasureSpec.UNSPECIFIED 是未指定尺寸,这种情况不多,一般都是父控件是AdapterView,通过 measure 方法传入的模式。