[Android学习笔记]view的layout过程学习
2024-10-12 12:35:24
View从创建到显示到屏幕需要经历几个过程:
measure -> layout -> draw
measure过程:计算view所占屏幕大小
layout过程:设置view在屏幕的位置
draw过程:绘制view
继承自view的控件的layout过程
layout过程相对measure过程比较简单,其作用是将view绘制到合适的位置
layout方法:
/* final 标识符 , 不能被重载 , 参数为每个视图位于父视图的坐标轴
* @param l Left position, relative to parent
* @param t Top position, relative to parent
* @param r Right position, relative to parent
* @param b Bottom position, relative to parent
*/
public final void layout(int l, int t, int r, int b) {
boolean changed = setFrame(l, t, r, b); //设置每个视图位于父视图的坐标轴
if (changed || (mPrivateFlags & LAYOUT_REQUIRED) == LAYOUT_REQUIRED) {
if (ViewDebug.TRACE_HIERARCHY) {
ViewDebug.trace(this, ViewDebug.HierarchyTraceType.ON_LAYOUT);
} onLayout(changed, l, t, r, b);//回调onLayout函数 ,设置每个子视图的布局
mPrivateFlags &= ~LAYOUT_REQUIRED;
}
mPrivateFlags &= ~FORCE_LAYOUT;
}
可见,当父元素呈现时候,会调用子view的layout方法,把子view放到合适的位置,layout中回调子
view的onLayout方法,实现具体定制
一般情况下,继承自view的控件不需要重写onLayout方法
最新文章
- hdu2588 GCD (欧拉函数)
- CentOS 7.1编译安装PHP7
- 编写base64图片文件
- 作业2.3 Github注册过程
- string类find函数返回值判定
- USB的四种传输类型
- 通过javascript完成分页查询功能
- 转 scrollLeft,scrollWidth,clientWidth,offsetWidth之完全详解
- jQuery 1.10.2 and 2.0.3 Released
- Apriori算法介绍(Python实现)
- 基于opencv的车牌识别系统
- 简洁灵活的前端框架------BootStrap
- day23_雷神_git
- Imbalanced Array CodeForces - 817D (思维+单调栈)
- .net core Identity集成IdentityServer4 (1)基本操作
- hash_map
- springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法
- 如何配置windows定时任务
- vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍
- SpringBoot多跨域请求的支持(JSONP)
热门文章
- 基于visual Studio2013解决算法导论之005原地随机排列数组
- cocos2d-x游戏开发系列教程-坦克大战游戏之所有坦克之间的碰撞检测
- Jquery progressbar通过Ajax请求获取后台进度演示
- Swift - 网络请求报App Transport Security has blocked a cleartext错
- ORA-01403: no data found
- Cocos2dx3.1 获取当前系统时间
- 2014 I/O归来:Google连接一切
- Github-Client(ANDROID)开源之旅(四) ------ 简介Roboguice
- C#加密与解密
- 改变Emacs下的注释代码方式以支持当前行(未选中情况下)的注释/反注释