网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

AndroidView测量流程(Measure)全面解析-创新互联

前言

目前创新互联已为千余家的企业提供了网站建设、域名、虚拟主机网站托管、企业网站设计、瓜州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

上一篇文章,笔者主要讲述了DecorView以及ViewRootImpl相关的作用,这里回顾一下上一章所说的内容:DecorView是视图的顶级View,我们添加的布局文件是它的一个子布局,而ViewRootImpl则负责渲染视图,它调用了一个performTraveals方法使得ViewTree开始三大工作流程,然后使得View展现在我们面前。本篇文章主要内容是:详细讲述View的测量(Measure)流程,主要以源码的形式呈现,源码均取自Android API 21.

从ViewRootImpl#PerformTraveals说起

我们直接从这个方法说起,因为它是整个工作流程的核心,我们看看它的源码:

private void performTraversals() {
  ...

 if (!mStopped) {
  int childWidthMeasureSpec = getRootMeasureSpec(mWidth, lp.width); // 1
  int childHeightMeasureSpec = getRootMeasureSpec(mHeight, lp.height);
  performMeasure(childWidthMeasureSpec, childHeightMeasureSpec); 
  }
 }

 if (didLayout) {
  performLayout(lp, desiredWindowWidth, desiredWindowHeight);
  ...
 }


 if (!cancelDraw && !newSurface) {
  if (!skipDraw || mReportNextDraw) {
  if (mPendingTransitions != null && mPendingTransitions.size() > 0) {
   for (int i = 0; i < mPendingTransitions.size(); ++i) {
   mPendingTransitions.get(i).startChangingAnimations();
   }
   mPendingTransitions.clear();
  }

  performDraw();
  }
 } 
 ...
}


分享文章:AndroidView测量流程(Measure)全面解析-创新互联
标题来源:http://bjjierui.cn/article/csojgj.html

其他资讯