[Android-培训-02-JFM.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[Android-培训-02-JFM

UIAndroid中全部的界面都是由视图构成。例如文本框,按钮,分割线,等等。所有的视图都有一个公共的基类View。其中ViewGroup是View的子类,可作为View的容器,完成View的布局(所有的布局都是ViewGroup的子类)。Window中的所有View都是在一棵树内。即可以通过代码也可以通过XML配置文件来向这个树中添加View。视图树如下图:IDView可能有一个数字ID类型。这个ID通常是在XML中定义,主要用于在视图树种查找指定的View。例如:在样式文件中定义一个按钮,分配一个唯一ID:在Activity中,可以查找这个按钮:注意,ID在一颗树内可能是不唯一的,但是最好要保证在视图树内的一部分要唯一。位置视图是一个矩形结构。拥有1个坐标和2个尺寸。坐标是矩形左上角的坐标;尺寸是宽和高。坐标和尺寸的单位为像素(pixel,组成屏幕的图象的最小独立元素)。可以通过view.getLeft()和view.getTop()来获取坐标。为了方便还有2个方法,view.getRight()和view.getBottom()。关系如图,淡黄色的是父View,绿色的是当前View。例如:当view.getLeft()返回20就代表着这个view是在所属的父View的左边缘右侧20像素。如上图中就是left为20像素。大小,填充和边距视图的大小是通过宽和高来表示。视图通常会有2组宽高值。第一组,估计值这组值决定视图在其父视图内想要占据的大小。可通过view.getMeasuredWidth()和view.getMeasuredHeight()。第二组,实际值这组值决定视图在屏幕上的实际尺寸。这组值可能与估计值相同。可通过view.getWidth()和view.getHeight()获得。Padding(内边距)是以像素为单位,表示内容距离边框的大小,拥有4个值left,top,right,bottom。可通过view.setPadding(left,top,right,bottom)或者view.setPaddingRelative(start,top,end,bottom)来设置,获取可通过view.getPaddingLeft(),view.getPaddingTop(),view.getPaddingRight(),view.getPaddingBottom(),getPaddingStart(),getPaddingEnd()。Margins(外边距)是在ViewGroup中提供,普通View不提供该属性,使用padding即可。注:paddingStart,paddingEnd与paddingLeft,paddingRight有什么差别呢?首先对于中国大陆来说,这个是没有任何差别的。在android4.1开始对双向文字进行有限支持,4.2开始对从右到左的文字进行了原生级别全面支持。paddingStart在LTR中与paddingLeft相同;在RTL中与paddingRight相同。布局布局分2个过程:测量过程测量过程是在view.measure(widthMeasureSpec,heightMeasureSpec)方法中完成,并且会自上向下遍历视图树。每个视图通过递归方式向下推送尺寸明细。在最后每个视图保存自己的尺寸。实际布局实际布局是在view.layout(left,top,right,bottom)方法中完成。同样是自上而下。在这个过程中,所有的父View均会使用之前测量好的值来定位全部子View的位置。注意在view.measure()方法执行后,因为子视图需要,所以view.getMeasureWidth()和view.getMeasureHeight()必须可以取到值。为了保证在测量过程的最后,所有的父视图都可以接受子视图的大小,视图在测量宽和高时必须要遵守父视图所派给的约束(宽,高)。父视图或许会调用measure方法多次测量它的子视图。例如:首先父视图会不限制尺寸来计算每一个子视图,这样父视图可以知道它的子视图想要的大小;然后,如果子视图无限制的尺寸过大或者过小,父视图会使用实际值来再次执行mesasure方法。测量过程会使用2个类来传递尺寸:View.MeasureSpec描述视图希望的测量和定位方式。有三种模式:UNSPECIFIED:父视图给子视图一个尺寸,但是由子视图来决定自身真正的尺寸。EXACTLY:父视图给子视图指定的明确尺寸。子视图必须使用。AT_MOST:父视图给子视图指定的最大尺寸。ViewGroup.LayoutParams描述视图希望的宽和高。有3类值可以指定:精确值:数字,单位可以是px(像素),dp(无关密度的像素),sp(优先字体大小缩放的像素值),in(物理

文档评论(0)

huhongjun + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档