Android View measure (一) 流程分析

public final class ViewRootImpl extends Handler implements ViewParent,View.AttachInfo.Callbacks, HardwareRenderer.HardwareDrawCallbacks {// 1 所有子视图的requestLayout方法,,最总都会触发根视图此方法public void requestLayout() {checkThread();// 需要重新布局mLayoutRequested = true;scheduleTraversals();}// 调度遍历public void scheduleTraversals() {if (!mTraversalScheduled) {mTraversalScheduled = true;…..// 当前类继承自Handler,发出一个空消息,目的是加入Message队列sendEmptyMessage(DO_TRAVERSAL);}}@Overridepublic void handleMessage(Message msg) {switch (msg.what) {…case DO_TRAVERSAL:…// 处理DO_TRAVERSAL消息performTraversals();…break;…..}}// 执行遍历private void performTraversals() {final View host = mView;int desiredWindowWidth;int desiredWindowHeight;int childWidthMeasureSpec;int childHeightMeasureSpec;……if (mLayoutRequested && !mStopped) {……childWidthMeasureSpec = getRootMeasureSpec(desiredWindowWidth, lp.width);childHeightMeasureSpec = getRootMeasureSpec(desiredWindowHeight, lp.height);……// host是一个View对象host.measure(childWidthMeasureSpec, childHeightMeasureSpec);……}……}}

注意:以上代码中getRootMeasureSpec方法可以或者跟视图中childWidthMeasureSpec与childHeightMeasureSpec,感兴趣的可以自己看下desiredWindowWidth变量的赋值其获取的是窗口的宽高。

上面的代码一共分为5个步骤

渐渐少了联络,友谊就变的淡了,所以,抽点时间,联络朋友一起聊聊天,

Android View measure (一) 流程分析

相关文章:

你感兴趣的文章:

标签云: