Activity加载View调用顺序

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

     在Activity的onCreate方法中,可以通过setContentView()方法来设置此Activity要显示的界面。在xml中的布局文件需要先解析成View树才能加载显示,通过View的onMeasure,onLayout,onDraw方法完成View的测量大小,布局以及View自身的绘制。在此想说一下Activity生命周期的onCreate,onStart,onResume方法和View自身的测量,布局等方法的调用顺序问题。

   先重写Activity的这几个方法并打印log

public class FlowActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.e("onCreate", "onCreate");setContentView(R.layout.flow);}@Overrideprotected void onResume() {Log.e("onResume", "onResume");super.onResume();}@Overrideprotected void onStart() {Log.e("onStart", "onStart");super.onStart();}
}

   在重写ViewGroup方法FlowLayout

public class FlowLayout extends ViewGroup {public FlowLayout(Context context) {super(context);}public FlowLayout(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stub}public FlowLayout(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {Log.e("onMeasure", "onMeasure");setMeasuredDimension(totalWidth, resolveSize(totalHeight, heightMeasureSpec));}@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {Log.e("onSizeChanged", "onSizeChanged");super.onSizeChanged(w, h, oldw, oldh);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {Log.e("onLayout", "onLayout");}@Overrideprotected void onFinishInflate() {Log.e("onFinishInflate", "onFinishInflate");super.onFinishInflate();}
}

打印Log可以看出Activity生命周期的函数和View的测量,布局等函数的调用顺序。111056_tPYi_1254864.png

因此,我们通常在onCreate方法里面是获取不到某个View测量的宽高值,获取的值为0.

只有当Activity的onResume方法调用完毕之后,当前的窗口将要显示可见,才会去测量,绘制View树。setContentView方法只是把xml文件解析为View树的过程,并没有发起绘制View树。当解析完毕之后会调用OnFinishInflate方法,完成解析。

当View的“大小”发生改变的时候会调用onSizeChanged方法,这个大小,个人理解为布局大小,并非测量大小。是在onMeasure之后,onLayout之前调用的方法。

理解了这些调用顺序,我们可以知道在何时去获取或设置一些值。


转载于:https://my.oschina.net/u/1254864/blog/213233

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 kube-bench 和 kube-hunter 对 Kubernetes 集群风险评估

点击上方蓝字关注 👆👆↓推荐关注↓随着 Kubernetes 越来越受欢迎,门槛也越来越低。但是安全问题仍然存在,下面介绍两个审计集群安全的开源工具。kube-benchkube-bench[1] 是一个 Go 应用程序,拥有 4.5k star。用于检查…

实验 4 操作、输出值和数据表实验报告--软件功能测试与性能测试实验

下载链接: https://download.csdn.net/download/qq_44872173/20031742

easyui 排序实现

1.对easyui datagrid 返回的数据,进行排序处理,便于搜索到我们的有用的信息。 例如: 2.datagrid 需要设置 sortable : true {field : crtTime,title : 创建时间,width : 100,sortable :true,align : center,formatter : crtTimeFtt}, 3.F12…

hm编码工具使用_H.265视频编码与技术全析(下)

H.265视频编码与技术全析(下)四.帧内预测模式共35个(h264有9个),包括Planar,DC,33个方向模式:除了Intra_Angular预测外,HEVC还和H.264/MPEG-4 AVC一样&#x…

redmine安装指引

为什么80%的码农都做不了架构师?>>> 1 前言 本文记录了在window7下面安装redmine的操作过程,同时也为其他有兴趣安装redmine的同学提供帮助。 2 环境说明 操作系统:window7 64位 数据库:mysql-5.5.36-winx64 Red…

.NET 诞生已20周年,您的 .NET 技能是否还停留在2010 年?

20年来,我们见证了超过上千万.NET 开发员,当前有600万.NET 开发者正在使用.NET技术构建各类解决方案。今天,IT市场对.NET 开发人员的需求达到了前所未有的程度,特别是在中国,各大公司对.NET 程序员的需求用火爆来形容都不为过&…

实验 5 性能测试脚本录制和开发实验报告--软件功能测试与性能测试实验

实验内容: 下载链接: https://download.csdn.net/download/qq_44872173/20031769

MySQL-5.5.33主从复制

搭建主从同步需要在两个电脑上分别安装 MySQL ,我这里安装的是 CentOS6.7 64位,MySQL-5.5.33。MySQL 是二进制包安装的:http://aby028.blog.51cto.com/5371905/1892818两台的操作是一样的,要求能够登陆 mysql 数据库即可。主从地址…

C#中的数据字典Dictionary

前言今天上午和往常一样在网上冲浪,看到码甲哥微信群里面在聊一个面试题,比较有意思,这里简单分享下结论中的Dictionary字典。有50w个int类型的数字,现在需要判断一下里面是否存在重复的数字,请简要说明下。假如这个题目让我做&am…

实验 6 场景创建与执行 实验报告--软件功能测试与性能测试实验

下载链接: 下载链接: https://download.csdn.net/download/qq_44872173/20031798 内容:

改成中文版的_lol手游怎么改成中文版?英雄联盟手游中文版更改教程

阅读本文前,请您先点击上面的蓝色字体,再点击“关注”,这样您就可以继续免费收到文章了。每天都有分享,完全是免费订阅,请放心关注! 【免责声明】本文部分文字与图片资源来自于网络&#xff0c…

dotnet 替换 ASP.NET Core 的底层通讯为命名管道的 IPC 库

这是一个用于本机多进程进行 IPC 通讯的库,此库的顶层 API 是采用 ASP.NET Core 的 MVC 框架,其底层通讯不是传统的走网络的方式,而是通过 dotnetCampus.Ipc 开源项目提供的基于 NamedPipeStream 命名管道的方式进行通讯。相当于替换掉 ASP.N…

好想写点儿什么,但是不知道怎么写

自己已经上班了,但是有好多的时候还是做起事情没有一点毅力,不论是学习,还是追女生,还是想学习音乐。就像没有毕业的时候看C语言的书籍,看了一个星期,不想看了然后就不看了。书上面自己做的笔记过不了几天也…

上帝的玩偶:haXe语言

在动画片《我叫MT》中,有个“五火球神教”,五火球神教的口号是“征服世界”。在小说《风姿物语》中疯狂的白家的某代家主白拉登,他手中的扇子上写着“世界征服”四个大字。 疯狂!只能用疯狂来形容。少年们,下面请看一群…

实验 7 场景运行监控及性能测试结果分析_实验报告--软件功能测试与性能测试实验

下载链接: 下载链接: https://download.csdn.net/download/qq_44872173/20031824 内容:

中yeti不能加载_将 PQ 查询加载到 Excel 中进行分析的三种常用的方式

点击上方蓝字 关注星标★不迷路岁月本长,忙者自促虽然大部分时候经过PQ清洗的数据都是加载到Excel工作表中,但是PQ中还有另外两种将数据返回Excel中进行分析的方法。三种不同的数据加载方式:Excel 智能表格仅限链接PowerPivot 数据模型一、加…

SQLite3.8.4.2在Windows平台下的编译和使用

2019独角兽企业重金招聘Python工程师标准>>> SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The …

【招聘(北京武汉)】北京高远华信科技 .NET 高级工程师

职位名称:.NET Core 高级工程师培养方向:架构师、技术总监月薪:15k-20k工作地点:北京、武汉职位信息1、理解后端架构,与后端工程师配合,为项目提供最优化的.NET Core技术解决方案;2、根据项目要…

通过邮箱远程控制电脑

转自本人在知乎上面的答案印如意Fitz 通过往邮箱发送邮件,从而达到控制电脑or开始抓取数据or播放音乐等系列操作。 like that: 先用我的常用邮箱给我备胎邮箱发送一封主题为“shutdown”的邮件 然后我要关机的电脑检测到了自动关机并发挥一封主题为“already shutdo…