一参构造函数
constructor(context: Context?) : super(context)
调用时机:
在代码中直接new一个实例的时候,会调用此构造函数。
二参构造函数
constructor(context: Context?, attrs: AttributeSet?) : super(context,attrs)
调用时机:
在xml布局文件调用的时候,会调用此构造函数。【在xml布局文件中调用,并且标签中还有自定义属性时,这里调用的还是第二个构造函数,很多博客是错误的,需要注意下】
三参构造函数
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
调用时机:
仅当我们主动显式调用,例如:在第二个构造函数中调用第三个构造函数。
总结
系统默认只会调用前两个构造函数,至于第三个构造函数的调用,通常是我们在构造函数中主动调用的。