AndroidView布局流程(Layout)全面解析-创新互联

前言

创新互联是一家专注于网站建设、成都网站设计与策划设计,孝南网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:孝南等地区。孝南做网站价格咨询:18980820575

上一篇文章,笔者详细讲述了View三大工作流程的第一个,Measure流程,如果对测量流程还不熟悉的读者可以参考一下上一篇文章。测量流程主要是对View树进行测量,获取每一个View的测量宽高,那么有了测量宽高,就是要进行布局流程了,布局流程相对测量流程来说简单许多。那么我们开始对layout流程进行详细的解析。

ViewGroup的布局流程

上一篇文章提到,三大流程始于ViewRootImpl#performTraversals方法,在该方法内通过调用performMeasure、performLayout、performDraw这三个方法来进行measure、layout、draw流程,那么我们就从performLayout方法开始说,我们先看它的源码:

private void performLayout(WindowManager.LayoutParams lp, int desiredWindowWidth,
 int desiredWindowHeight) {
 mLayoutRequested = false;
 mScrollMayChange = true;
 mInLayout = true;

 final View host = mView;
 if (DEBUG_ORIENTATION || DEBUG_LAYOUT) {
 Log.v(TAG, "Laying out " + host + " to (" +
  host.getMeasuredWidth() + ", " + host.getMeasuredHeight() + ")");
 }

 Trace.traceBegin(Trace.TRACE_TAG_VIEW, "layout");
 try {
 host.layout(0, 0, host.getMeasuredWidth(), host.getMeasuredHeight()); // 1

 //省略...
 } finally {
 Trace.traceEnd(Trace.TRACE_TAG_VIEW);
 }
 mInLayout = false;
}


本文名称:AndroidView布局流程(Layout)全面解析-创新互联
浏览地址:http://ybzwz.com/article/dhjdgo.html