page.title=How Android Draws Views
parent.title=User Interface
parent.link=index.html
@jd:body


<p>When an Activity receives focus, it will be requested to draw its layout.
The Android framework will handle the procedure for drawing, but the Activity must provide
the root node of its layout hierarchy.</p>

<p>Drawing begins with the root node of the layout. It is requested to measure and 
draw the layout tree. Drawing is handled by walking the tree and rendering each View that
   intersects the invalid region. In turn, each View group is responsible for requesting
each of its children to be drawn (with the <code>{@link android.view.View#draw(Canvas) draw()}</code> method) 
and each View is responsible for drawing itself.
 Because the tree is traversed in-order,
   this means that parents will be drawn before (i.e., behind) their children, with
   siblings drawn in the order they appear in the tree.
   </p>

<div class="sidebox">
  <p>The framework will not draw Views that are not in the invalid region, and also 
   will take care of drawing the Views background for you.</p>
   <p>You can force a View to draw, by calling <code>{@link android.view.View#invalidate()}</code>.
   </p>
</div>

<p>
   Drawing the layout is a two pass process: a measure pass and a layout pass. The measuring
   pass is implemented in <code>{@link android.view.View#measure(int, int)}</code> and is a top-down traversal
   of the View tree. Each View pushes dimension specifications down the tree
   during the recursion. At the end of the measure pass, every View has stored
   its measurements. The second pass happens in
   <code>{@link android.view.View#layout(int,int,int,int)}</code> and is also top-down. During
   this pass each parent is responsible for positioning all of its children
   using the sizes computed in the measure pass.
   </p>
   
   <p>
   When a View's <code>measure()</code> method returns, its <code>{@link android.view.View#getMeasuredWidth()}</code> and
   <code>{@link android.view.View#getMeasuredHeight()}</code> values must be set, along with those for all of
   that View's descendants. A View's measured width and measured height values
   must respect the constraints imposed by the View's parents. This guarantees
   that at the end of the measure pass, all parents accept all of their
   children's measurements. A parent View may call <code>measure()</code> more than once on
   its children. For example, the parent may measure each child once with
   unspecified dimensions to find out how big they want to be, then call
   <code>measure()</code> on them again with actual numbers if the sum of all the children's
   unconstrained sizes is too big or too small (i.e., if the children don't agree among themselves
  as to how much space they each get, the parent will intervene and set the rules on the second pass).
   </p>
   
   <div class="sidebox"><p>
   To intiate a layout, call <code>{@link android.view.View#requestLayout}</code>. This method is typically
   called by a View on itself when it believes that is can no longer fit within
   its current bounds.</p>
   </div>

   <p>
   The measure pass uses two classes to communicate dimensions. The
   {@link android.view.View.MeasureSpec} class is used by Views to tell their parents how they
   want to be measured and positioned. The base LayoutParams class just
   describes how big the View wants to be for both width and height. For each
   dimension, it can specify one of:</p>
   <ul>
    <li> an exact number
    <li><var>FILL_PARENT</var>, which means the View wants to be as big as its parent
    (minus padding)</li>
    <li><var>WRAP_CONTENT</var>, which means that the View wants to be just big enough to
    enclose its content (plus padding).</li>
   </ul>
  <p>There are subclasses of LayoutParams for different subclasses of ViewGroup.
   For example, AbsoluteLayout has its own subclass of LayoutParams which adds
   an X and Y value.
   </p>
   
   <p>
   MeasureSpecs are used to push requirements down the tree from parent to
   child. A MeasureSpec can be in one of three modes:</p>
   <ul>
    <li><var>UNSPECIFIED</var>: This is used by a parent to determine the desired dimension
    of a child View. For example, a LinearLayout may call <code>measure()</code> on its child
    with the height set to <var>UNSPECIFIED</var> and a width of <var>EXACTLY</var> 240 to find out how
    tall the child View wants to be given a width of 240 pixels.</li>
    <li><var>EXACTLY</var>: This is used by the parent to impose an exact size on the
    child. The child must use this size, and guarantee that all of its
    descendants will fit within this size.</li>
    <li><var>AT_MOST</var>: This is used by the parent to impose a maximum size on the
    child. The child must gurantee that it and all of its descendants will fit
    within this size.</li>
   </ul>
   


