Android View的onFinishInflate和onSizeChanged生命周期详解

article/2025/10/3 12:30:43

1、onFinishInflate
从字面上来看这个方法的作用就是在完成View的布局实例化后的回调,关于布局实例化的内容(LayoutInflater)的学习网址:LayoutInflater原理,通过对这篇博客的
学习可以得知:这个回调方法是在整个布局文件都实例化结束后每个View才进行回调,或者说是在控件及其子控件都实例化结束后每个View才进行的回调。
ps:这个回调是发生在视图实例化的过程中,一般在activity的oncreate方法中,并且只有在布局文件中实例化才有会这个回调。

2、onSizeChange
  根据size和change以及这个方法的参数名称推断这个方法是在视图的大小发生改变后的回调,而视图的大小改变时机肯定包括layout方法,所以这个回调方法肯定是在layout方法之中调用,除了网上的资料可以证明,我自己查阅了layout源代码(sdk20)也确实是这样的,原图如下:

其中setOpticalFrame方法也是调用setFrame方法,setFrame方法核心代码如下(sdk20):、

从上面两张图可以看出两点:
1)layout方法直接把四个参数赋值给对应的控件坐标变量(mLeft,mTop,mRight,mBottom),也就是确定了控件的区域;
2)如果旧的宽度和高度任意一个发生了改变都会调用sizeChange方法,而sizeChange方法里面就是onSizeChange方法。
ps:layout中发生的onSizeChange回调是属于绘制过程中的。
 


http://chatgpt.dhexx.cn/article/qiguNQcX.shtml

相关文章

Android View onFinishInflate

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/125377224 本文出自【赵彦军的博客】 覆写 onFinishInflate /*** Description:* author: zhaoyj* date: 2022/6/20*/ public class MyView extends View {public MyView(Context context, Nullab…

关于onFinishInflate的一些事

关于onFinishInflate的一些事 这个方法相信大家都不会陌生,大家都知道这个方法在onCreate之后执行,要拿到控件宽高要onWindowFocusChanged方法之后才能拿到,平时自定义控件的时候自己也用的不少。但是今天接口有一个要求,让请求每…

编写Pascal代码

编写Pascal代码 注释 在Pascal中,注释括在大括号中或带星号的圆括号中。Delphi 也认可C 风格的注释,即把注释放在双斜线后。例如 {this is a comment} (* this is another comment *) // this is a comment up to the end of the line第一种注释方式较简…

PASCAL程序设计语言 PDF 分享

链接:https://pan.baidu.com/s/1cflbic-tCaG0csUiaHFABA 560d 相关推荐 Go 语言程序设计 中文编程学习进阶 易语言编程系统 Python高级编程 Java数据结构和算法 Java编程思想(第4版) PASCAL 语言是第一个体现结构化程序设计概念的计算机语言,因此它在 60 年代

pascal语法介绍

数据挖掘之数据初步探索 1. 汇总统计 众数:具有最高频率的值,针对离散型数据 百分位数:计算方法(3,4.3,6.2,6.5,7.6,7.8,8.1,9.6,1…

pascal语言基础(三)

该内容为学习 《PASCAL程序设计 第2版》郑启华编著 的笔记&#xff0c;部分与c语言对比学习&#xff0c;方便记忆。 pascal语言基础&#xff08;一&#xff09; pascal语言基础&#xff08;二&#xff09; 集合类型 定义 TYPE<集合类型标识符> set of <基类型&g…

pascal语言基础(二)

该内容为学习 《PASCAL程序设计 第2版》郑启华编著 的笔记&#xff0c;部分与c语言对比学习&#xff0c;方便记忆。 pascal语言基础&#xff08;一&#xff09; 函数与过程程序设计 函数 1. 定义&#xff1a; FUNCTION <函数名>(<参数表>):<函数类型>;&…

pascal语言基础(一)

该内容为学习 《PASCAL程序设计 第2版》郑启华编著 的笔记&#xff0c;部分与c语言对比学习&#xff0c;方便记忆。 pascal语言基础&#xff08;二&#xff09; 基本介绍 保留字&#xff08;35个&#xff09; AND、ARRAY、BEGIN、CASE、CONST、DIV、DO、DOWNTO、ELSE、END、…

PASCAL语言的基本知识

Pascal是一种计算机通用的高级程序设计语言。它由瑞士Niklaus Wirth教授于六十年代末设计并创立。 以法国数学家命名的Pascal语言。现已成为使用最广泛的基于DOS的语言之一。其主要特点有&#xff1a;严格的结构化形式&#xff1b;丰富完备的数据类型&#xff1b;运行效率高&am…

C语言assert()函数用法总结

&#xfeff;&#xfeff; assert宏的原型定义在<assert.h>中&#xff0c;其作用是如果它的条件返回错误&#xff0c;则终止程序执行&#xff0c;原型定义&#xff1a; #include <assert.h> void assert( int expression ); assert的作用是现计算表达式 expression…

C语言assert函数完全攻略

断言assert函数&#xff0c;C语言assert函数完全攻略 对于断言&#xff0c;相信大家都不陌生&#xff0c;大多数编程语言也都有断言这一特性。简单地讲&#xff0c;断言就是对某种假设条件进行检查。在 C 语言中&#xff0c;断言被定义为宏的形式&#xff08;assert(expressio…

python assert函数解析(最清晰的解释)

欢迎关注WX公众号&#xff1a;【程序员管小亮】 python assert的作用&#xff1a; assert函数用于程序调试 Python 官方文档解释https://docs.python.org/3/reference/simple_stmts.html#assert “Assert statements are a convenient way to insert debugging assertions …

C++中的assert用法

assert用法 void assert(int expression);C中assert&#xff0c;即断言&#xff0c;可以在程序调试阶段检查错误&#xff0c;常用的就比如函数传参时&#xff0c;若是整型&#xff0c;是否超出范围&#xff1b;若是字符串型&#xff0c;地址是否为空等。 在正常时&#xff0c;…

assert()函数(断言函数)

assert()函数&#xff08;断言函数&#xff09; 一&#xff0c;快速了解一下assert函数 void assert (int expression);//括号里面是一个表达式。assert函数是一个宏。 括号里面的表达式如果为真&#xff0c;程序正常执行。 如果函数形式的宏的参数表达式比较等于零&#x…

c语言中assert函数是什么

点击上方蓝字关注我&#xff0c;了解更多咨询 1、assert将通过检查表达式expresion的值来决定是否需要终止执行程序。 2、如果表达式expresion的值是假的(即0)&#xff0c;它将首先向标准错误流stderr打印错误信息。 通过调用abort函数终止程序运行。否则&#xff0c;assert没有…

assert()函数

今天&#xff0c;遇到一个函数返回值时引用&#xff0c;但是返回值存在为NULL的情况。下面是搜到的解决方案 然后&#xff0c;就搜了搜assert()函数的用法&#xff0c;找到一篇&#xff0c;贴在下面assert()函数用法总结 assert宏的原型定义在<assert.h>中&#xff0c;其…

assert()函数用法总结

assert宏的原型定义在<assert.h>中&#xff0c;其作用是如果它的条件返回错误&#xff0c;则终止程序执行&#xff0c;原型定义&#xff1a; #include <assert.h> void assert( int expression ); assert的作用是现计算表达式 expression &#xff0c;如果其值为假…

assert断言函数简介

目录 &#x1f38d;1.整体介绍 &#x1f38d;2.assert() 的用法和机制 &#x1f38d;3.关于NDEBUG 宏 &#x1f38d;4.使用assert()注意事项 &#x1f38d;4.1使用 assert() 时&#xff0c;被检测的表达式最好不要太复杂 &#x1f38d;4.2不要用会改变环境的语句作为断言…

第十二章 C语言调试_assert断言函数

在我们的实际开发过程之中&#xff0c;常常会出现一些隐藏得很深的BUG&#xff0c;或者是一些概率性发生的BUG&#xff0c;通常这些BUG在我们调试的过程中不会出现很明显的问题&#xff0c;但是如果我们将其发布&#xff0c;在用户的各种运行环境下&#xff0c;这些程序可能就会…

c语言之assert()函数用法总结

1.assert宏的原型定义在<assert.h>中&#xff0c;其作用是如果它的条件返回错误&#xff0c;则终止程序执行。 库函数&#xff1a; assert.h 原型定义&#xff1a; void assert( int expression ); assert的作用是现计算表达式 expression &#xff0c;如果其值为假&…