Android onFinishInflate理解
2019独角兽企业重金招聘Python工程师标准>>>
在View中,有个onFinishInflate方法,当应用从XML加载该组件并用它构建界面之后调用的方法。所以有的同学习惯在该方法中做一些操作,比如通过findViewById获取对象,或者计算宽高等。
不过这有个坑
就是该方法,只有当自定义View,通过在XML中创建时才会调用。
如果是通过new方式创建,则不会执行该方法。
下面是测试的代码:
代码1
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}<com.test.view.InflateView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text="Hello World!" />
InflateView生命周期输出
09-01 14:34:53.275 7608-7608/? D/InflateView: onFinishInflate
09-01 14:34:53.285 7608-7608/? D/InflateView: onAttachedToWindow
09-01 14:34:53.290 7608-7608/? D/InflateView: onMeasure
09-01 14:34:53.290 7608-7608/? D/InflateView: onMeasure
09-01 14:34:53.300 7608-7608/? D/InflateView: onMeasure
09-01 14:34:53.300 7608-7608/? D/InflateView: onMeasure
09-01 14:34:53.395 7608-7608/? D/InflateView: onMeasure
09-01 14:34:53.395 7608-7608/? D/InflateView: onMeasure
09-01 14:34:53.395 7608-7608/? D/InflateView: onLayout
可以看出,输出了onFinishInflate
代码2
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);InflateView view = new InflateView(this);setContentView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));}
InflateView生命周期输出
09-01 14:34:16.020 7608-7608/? D/InflateView: onAttachedToWindow
09-01 14:34:16.020 7608-7608/? D/InflateView: onMeasure
09-01 14:34:16.150 7608-7608/? D/InflateView: onLayout
09-01 14:34:16.180 7608-7608/? D/InflateView: onMeasure
09-01 14:34:16.180 7608-7608/? D/InflateView: onLayout
可以看出没有执行onFinishInflate
转载于:https://my.oschina.net/android520/blog/740988
Android onFinishInflate理解相关推荐
- Android onFinishInflate 的理解
onFinishInflate 是添加在layout xml里面的view 被LayoutInflater 解析完addview 之后再回调的onFinishInflate 方法. 构造函数是实例化 ...
- Android深入理解Fragment
Fragment 目录 思维导图 概述 设计原因 基本使用 xml 声明 代码设置 添加没有 UI 的 fragment 生命周期 管理 Fragment 和执行事务 与 Activity 通信 常见 ...
- Android 深入理解 ANR 触发原理:Service
一.概述 ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过 ...
- Android深入理解文字绘制:FontMetrics字体测量及其TextPaint介绍
文章目录 TextPaint介绍 一.FontMetrics 1.1 理论知识 1.2 代码验证 1.3 fontMetrics中的变量和文字的size.typeface有关 1.4 绘制居中屏幕的文 ...
- android:layout_with=,android – 难以理解layout_alignWithParentIfMissing
这仅适用于使用RelativeLayout时. 如果您将元素设置为一个其他元素,则表示该元素位于该元素的左侧. 但是如果这个元素会丢失,因为你删除它,例如它将与父对齐. 举个例子 android:la ...
- 【Android个人理解(八)】跨应用调用不同组件的方法
如果情景: 创建两个应用appA和appB,appA包括一个Service,此Service有一个堵塞方法每隔10秒钟产生一个随机数字,例如以下: public int getRandomInt(){ ...
- Android深入理解Context(三)Context完全解析
1· Context类型 我们知道,Android应用都是使用Java语言来编写的,那么大家可以思考一下,一个Android程序和一个Java程序,他们最大的区别在哪里?划分界限又是什么呢?其实简单点 ...
- Android targetsdkversion理解
一.Android gradle中常见的版本配置 compileSdkVersion 代表着编译的时候,会采用该api的规范进行代码检查和警告,但是并不会编译进apk中. targetSdkVersi ...
- Android 深入理解Android中的自定义属性
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45022631: 本文出自:[张鸿洋的博客] 1.引言 对于自定义属性,大家肯定 ...
最新文章
- 功能强大的 C++ redis 客户端库增加至 acl 项目中
- Matlab | 数字信号处理:双线性变换法设计IIR数字滤波器
- 【实战】用机器学习来提升你的用户增长:(三、预测客户的终生价值)
- 全分布式集群搭建总结
- php使用pdf2htmlex,转换 HTML 与 PDF 格式文档的神器
- shiro学习(18):使用注解实现权限认证和后台管理三
- 开放-封闭原则(OCP)
- 服务器zip解压php,服务器端解压缩zip的脚本
- 如何保证mq的有序性_消息队列如何保证顺序性?
- vSAN 6.7培训_第1章-Virtual SAN各版本功能介绍
- 讯为开发板的最小LINUX系统烧写及U盘的挂载及卸载
- 【Vegas原创】windows2008配置、安装Exchange2007证书(for OWA,RPC over HTTP)
- Svn分支管理的使用(三)
- 用python做频数分析_如何用Python制作频率(频数)分布表(图)?
- 详解关系抽取模型 CasRel
- Linux:TCP粘包问题的模拟实现以及解决方法
- MP2669GR-锂电池充电管理芯片
- Deepin常用命令、系统命令、Vi命令
- EasyUI的Vue版本
- ios 开发 flurry 资料
热门文章
- java ThreadPoolExecutor 分析
- linux磁盘配额quota,Linux磁盘配额-Quota
- 比亚迪在连遭挫败之后,4月份迎来喜报,夺下热销榜第一名
- 以下选项中、不是python对文件的打开模式的是_关于Python文件打开模式的描述,以下选项中错误的是()。...
- 小图放大神器 MAX-Image-Resolution-Enhancer
- matlab语音信号处理GUI
- linux之Oops原理及解析
- 科技界的乌托邦之城:远离“房价高交通堵”
- IP-GUARD导致微软OFFICE里Onedrive打不开加密和明文文件
- 【FPGA基础】关于FPGA的IP核概念