当前位置: 首页 > news >正文

石家庄网站建设高端58同城最新招聘网找工作招聘信息

石家庄网站建设高端,58同城最新招聘网找工作招聘信息,做文案策划有些网站,网站建设费用有哪些Android布局绘制流程: 从根节点 noodview 递归调用每一级子view 的 Mesure 进行测量 然后 从根节点 noodview 递归调用每一级子view 的 layout 方法,把测量过程得出的子view的位置和size进行传递给子view ,然后子view保存参数 测量是动态化,是需要根view和子view 首先nood…Android布局绘制流程: 从根节点 noodview 递归调用每一级子view 的 Mesure 进行测量 然后 从根节点 noodview 递归调用每一级子view 的 layout 方法,把测量过程得出的子view的位置和size进行传递给子view ,然后子view保存参数 测量是动态化,是需要根view和子view 首先nood view 根节点,在自己的measure 中,根据xml布局中对子view 的 要求规范 和 自己可用空间,得出子view 具体尺寸要求 next: noodview(父View) 根节点在自己的onMeasure 中 根据xml定义的对子view 的要求,和自己可用空间,得出对子view 的具体尺寸要求 子view在自己的onMeasure 根据noodView 的要求以及特性计算出自己的期望尺寸 如果是viewGroup,还会调用每个子View的measure 进行测量 计算(父View一般会和子View之间宽度相同 或者相加叠加) 如果自定义子view 宽高 和 父View有冲突,则父View会修正子View大小,例如ConstraintLayout 和 LinearLayout 表现出很大差异 父View在子View计算出期望尺寸时后,得出子View的实际尺寸和位置 子View在self的layout中,将父view传来的实际尺寸和位置进行保存 public void layout(int l, int t, int r, int b) {if ((mPrivateFlags3 PFLAG3_MEASURE_NEEDED_BEFORE_LAYOUT) ! 0) {onMeasure(mOldWidthMeasureSpec, mOldHeightMeasureSpec);mPrivateFlags3 ~PFLAG3_MEASURE_NEEDED_BEFORE_LAYOUT;}int oldL mLeft;int oldT mTop;int oldB mBottom;int oldR mRight;boolean changed isLayoutModeOptical(mParent) ?setOpticalFrame(l, t, r, b) : setFrame(l, t, r, b);if (changed || (mPrivateFlags PFLAG_LAYOUT_REQUIRED) PFLAG_LAYOUT_REQUIRED) {onLayout(changed, l, t, r, b);if (shouldDrawRoundScrollbar()) {if(mRoundScrollbarRenderer null) {mRoundScrollbarRenderer new RoundScrollbarRenderer(this);}} else {mRoundScrollbarRenderer null;}mPrivateFlags ~PFLAG_LAYOUT_REQUIRED;ListenerInfo li mListenerInfo;if (li ! null li.mOnLayoutChangeListeners ! null) {ArrayListOnLayoutChangeListener listenersCopy (ArrayListOnLayoutChangeListener)li.mOnLayoutChangeListeners.clone();int numListeners listenersCopy.size();for (int i 0; i numListeners; i) {listenersCopy.get(i).onLayoutChange(this, l, t, r, b, oldL, oldT, oldR, oldB);}}}final boolean wasLayoutValid isLayoutValid();mPrivateFlags ~PFLAG_FORCE_LAYOUT;mPrivateFlags3 | PFLAG3_IS_LAID_OUT;if (!wasLayoutValid isFocused()) {mPrivateFlags ~PFLAG_WANTS_FOCUS;if (canTakeFocus()) {// We have a robust focus, so parents should no longer be wanting focus.clearParentsWantFocus();} else if (getViewRootImpl() null || !getViewRootImpl().isInLayout()) {// This is a weird case. Most-likely the user, rather than ViewRootImpl, called// layout. In this case, theres no guarantee that parent layouts will be evaluated// and thus the safest action is to clear focus here.clearFocusInternal(null, /* propagate */ true, /* refocus */ false);clearParentsWantFocus();} else if (!hasParentWantsFocus()) {// original requestFocus was likely on this view directly, so just clear focusclearFocusInternal(null, /* propagate */ true, /* refocus */ false);}// otherwise, we let parents handle re-assigning focus during their layout passes.} else if ((mPrivateFlags PFLAG_WANTS_FOCUS) ! 0) {mPrivateFlags ~PFLAG_WANTS_FOCUS;View focused findFocus();if (focused ! null) {// Try to restore focus as close as possible to our starting focus.if (!restoreDefaultFocus() !hasParentWantsFocus()) {// Give up and clear focus once weve reached the top-most parent which wants// focus.focused.clearFocusInternal(null, /* propagate */ true, /* refocus */ false);}}}if ((mPrivateFlags3 PFLAG3_NOTIFY_AUTOFILL_ENTER_ON_LAYOUT) ! 0) {mPrivateFlags3 ~PFLAG3_NOTIFY_AUTOFILL_ENTER_ON_LAYOUT;notifyEnterOrExitForAutoFillIfNeeded(true);}notifyAppearedOrDisappearedForContentCaptureIfNeeded(true);} protected boolean setFrame(int left, int top, int right, int bottom) {boolean changed false;if (DBG) {Log.d(VIEW_LOG_TAG, this View.setFrame( left , top , right , bottom ));}if (mLeft ! left || mRight ! right || mTop ! top || mBottom ! bottom) {changed true;// Remember our drawn bitint drawn mPrivateFlags PFLAG_DRAWN;int oldWidth mRight - mLeft;int oldHeight mBottom - mTop;int newWidth right - left;int newHeight bottom - top;boolean sizeChanged (newWidth ! oldWidth) || (newHeight ! oldHeight);// Invalidate our old positioninvalidate(sizeChanged);mLeft left;mTop top;mRight right;mBottom bottom;mRenderNode.setLeftTopRightBottom(mLeft, mTop, mRight, mBottom);mPrivateFlags | PFLAG_HAS_BOUNDS;if (sizeChanged) {sizeChange(newWidth, newHeight, oldWidth, oldHeight);}if ((mViewFlags VISIBILITY_MASK) VISIBLE || mGhostView ! null) {// If we are visible, force the DRAWN bit to on so that// this invalidate will go through (at least to our parent).// This is because someone may have invalidated this view// before this call to setFrame came in, thereby clearing// the DRAWN bit.mPrivateFlags | PFLAG_DRAWN;invalidate(sizeChanged);// parent display list may need to be recreated based on a change in the bounds// of any childinvalidateParentCaches();}// Reset drawn bit to original value (invalidate turns it off)mPrivateFlags | drawn;mBackgroundSizeChanged true;mDefaultFocusHighlightSizeChanged true;if (mForegroundInfo ! null) {mForegroundInfo.mBoundsChanged true;}notifySubtreeAccessibilityStateChangedIfNeeded();}return changed;}在setFrame时 , left,top,right,bottom 在layout的时候就已经保存下来了,重写layout 可以改变 这些参数 如果是ViewGroup,在onLayout中调用每个子View 的layout,并把子view的位置传给子view
http://www.yutouwan.com/news/362685/

相关文章:

  • 建立网站需要服务器吗学校网站建设心得
  • 口碑好的武进网站建设网站开发合同 中英文
  • 展示型装饰网站模板下载WordPress首页播放音乐
  • 用discuz建设企业网站百度有做企业网站吗
  • 做网站后都需要什么品牌建设的作用和意义
  • 个人网站推广费用如何建设一个子网站
  • 蒙自做网站的公司腾讯服务器租用
  • 江苏五星建设网站做网站要不要服务器
  • 旅行社销售网站建设方案手机网站html模板下载
  • 印尼做网站的教学 中文管网建设公司
  • 网站建设指导思想html网页制作模板免费
  • 企业网站的制作公司flash里面如何做网站链接
  • 企业网站建设网站优化推广电子商务中的网站开发
  • 加强网站建设的原因道滘仿做网站
  • 网站开发必学的技巧有哪些杭州互联网网站定制公司
  • 网站建设广告有哪些平台网络营销计划书范例
  • 0网站建设公司宣传册电子工程网官方网站
  • 站长之家ip查询锤子简历模板免费
  • 现在怎么做网站广宁住房和城乡建设局网站
  • 网站开发费用税企业集团网站建设方案
  • 做电子商务网站 语言上海办公室设计装修公司
  • 权重网站建设wordpress添加主题
  • 济宁网站开发软件开发需要用什么软件
  • 企业网站建设设计服务作一个网站要多少钱
  • 做信息发布网站要多少钱嘉兴网站建设需要多少钱
  • 企业网站官网建设cms网站建设教程
  • 网页设计网站建设的书籍顺电网上商城怎么样
  • 网站建设部网玉环建设规划局网站
  • 广东建设执业资格注册中心网站seo排名优化怎样
  • 成都网站排名提升网站开发了解客户需求