android gui之view测量(烟台杰瑞教育android培训部原创)

android gui之view测量(烟台杰瑞教育android培训部原创)

ID:11916156

大小:61.61 KB

页数:6页

时间:2018-07-14

android gui之view测量(烟台杰瑞教育android培训部原创)_第1页
android gui之view测量(烟台杰瑞教育android培训部原创)_第2页
android gui之view测量(烟台杰瑞教育android培训部原创)_第3页
android gui之view测量(烟台杰瑞教育android培训部原创)_第4页
android gui之view测量(烟台杰瑞教育android培训部原创)_第5页
资源描述:

《android gui之view测量(烟台杰瑞教育android培训部原创)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、烟台杰瑞教育科技有限公司(Android开发培训部)版权所有AndroidGUI之View测量  在上篇文章(http://www.cnblogs.com/jerehedu/p/4607599.html#gui)中,根据源码探索了View的绘制过程,过程有三个主要步骤,分别为测量、布局、绘制。系统对绘制已经做了很好的封装,我们主要对测量和布局过程进行分析,看一看android是如何对view进行测量和布局的。  根据上篇文章的分析,我们知道在ViewRootImpl的performMeasure方法

2、中,实际上调用了mView.measure(childWidthMeasureSpec,childHeightMeasureSpec);方法。根据源码我们找到了该方法的原型,此方法在View类中,并且是final方法,不可被子类重写,方法的具体源码如下:publicfinalvoidmeasure(intwidthMeasureSpec,intheightMeasureSpec){booleanoptical=isLayoutModeOptical(this);if(optical!=isLayou

3、tModeOptical(mParent)){……}//Suppresssignextensionforthelowbyteslongkey=(long)widthMeasureSpec<<32

4、(long)heightMeasureSpec&0xffffffffL;if(mMeasureCache==null)mMeasureCache=newLongSparseLongArray(2);if((mPrivateFlags&PFLAG_FORCE_LAYOUT)==PFLAG_FORCE_LAYO

5、UT

6、

7、widthMeasureSpec!=mOldWidthMeasureSpec

8、

9、heightMeasureSpec!=mOldHeightMeasureSpec){……if(cacheIndex<0

10、

11、sIgnoreMeasureCache){//measureourselves,thisshouldsetthemeasureddimensionflagbackonMeasure(widthMeasureSpec,heightMeasureSpec);mPrivateFlags3&=~PFL

12、AG3_MEASURE_NEEDED_BEFORE_LAYOUT;}else{longvalue=mMeasureCache.valueAt(cacheIndex);//Castingalongtointdropsthehigh32bits,nomaskneededsetMeasuredDimensionRaw((int)(value>>32),(int)value);mPrivateFlags3

13、=PFLAG3_MEASURE_NEEDED_BEFORE_LAYOUT;------杰瑞教育(www

14、.jerehedu.com)专注IT技能培训打造一流人才服务平台------烟台杰瑞教育科技有限公司(Android开发培训部)版权所有}……mPrivateFlags

15、=PFLAG_LAYOUT_REQUIRED;}mOldWidthMeasureSpec=widthMeasureSpec;mOldHeightMeasureSpec=heightMeasureSpec;mMeasureCache.put(key,((long)mMeasuredWidth)<<32

16、(long)mMeasuredH

17、eight&0xffffffffL);//suppresssignextension}  根据方法内容和说明,可以知道本方法就是用来测量View的大小的,而需要的两个参数是由父View构建的,用于说明父View对子View的测量的规格要求,实际上在这个方法中真正完成测量大小的是方法onMeasure,此方法我们稍后分析。在此之前我们先要明白measure方法中的两个参数的含义,刚才有提到参数是父View对子View的测量规格要求,那么Android是如何描述的呢,这里用到了一个类MeasureSpe

18、c,此类为View中的一个内部类,关键源码如下:publicstaticclassMeasureSpec{privatestaticfinalintMODE_SHIFT=30;privatestaticfinalintMODE_MASK=0x3<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。