How Android Draws Views
来源:互联网 发布:mac怎么调整图片方向 编辑:程序博客网 时间:2024/05/21 18:45
翻译自http://developer.android.com/guide/topics/ui/how-android-draws.html
当Activity获得焦点时,就会被要求画出布局。安卓框架会处理绘图的过程,但是Activity必须提供布局架构的根节点。
绘图从layout的根节点开始。框架会遍历layout树,同时渲染处于有效区域的view。同样的,绘图过程中 ViewGroup负责要求它的每个孩子调用draw函数。因为树是按顺序遍历的,所以父视图会先于子视图被画出来。
画出布局是两个传递过程:measure pass和layout pass。前者由measre(int, int)实现,是从顶向下的遍历过程。在measure过程的最后,每个视图都存储了自己的尺寸。后者由layout(int, int, int, int)实现,也是自顶向下的过程。该过程中每个父视图负责使用measure pass中计算好的尺寸放置它的子视图。
视图的测量宽度和测量高度必须遵从自己父视图加以的限制。一个父视图可能对它的所有孩子视图调用measure()超过一次。例如,父视图可能传递unspecified去measure它的每个孩子,以计算每个孩子想要多大的位置。如果所有孩子视图的总面积太大或者太小,这时再次调用measure(),传递实际的数字,父视图会在第二次pass中协调子视图的位置,并设定规则。
measure pass使用两个类去传递参数。
1.
ViewGroup.LayoutParams
用于view告诉父视图自己想被怎么measure和position。在高和宽上,LayoutParams能被一下之一设定:
精确的数字
MATCH_PARENT:和父视图一样大
WRAP_CONTENT:只是足够大去放置所有的内容,包括padding
RelativeLayout拥有
ViewGroup.LayoutParams
的子类,增加了把子视图水平和垂直居中的能力。
2.MeasureSpec
用于父视图自顶向下将要求加于子视图。常量有:
UNSPECIFIED
EXACTLY
AT MOST: 子视图的最大值
- How android draws views
- How Android Draws Views
- How Android Draws Views
- How Android Draws Views
- How Android Draws Views
- How Android Draws Views
- 【Android】How Android Draws Views
- Android Developer : How Android Draws Views
- (翻译)API-How Android Draws Views
- View 绘制机制 -- How Android Draws Views
- 【Android文档】Android界面绘制流程--------How Android Draws Views
- Android官方文档翻译--How Android Draws Views
- Android官方文档翻译--How Android Draws Views
- How Android Draws Views(Android 视图绘制机制)
- How Android Draws Views,Android如何绘制View,
- How Android Draws Views 安卓如何绘制view
- 安卓如何绘制视图-How Android Draws Views
- Android 用户界面---Android如何描画View(How Android Draws Views)
- James(Java Apache Mail Enterprise Mail)+Javamail构建邮件服务
- http:多线程下载器
- poj 1469——COURSES(匹配)
- dubbo实际应用中的完整的pom.xml
- cocos2d-x -- 渠道SDK【棱镜】接入(1)
- How Android Draws Views
- Devexpress控件之check box list的初始赋值和勾选值保存
- ios随笔之SAX解析XML文件
- 密码学学习记录(一)古典密码学
- 转载 Android 事件捕捉和处理流程分析
- mbps和MB/s是怎么换算的
- 【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始(三)
- [LeetCode] String to Integer (atoi)
- hdu 1045 Fire Net