自定义View的构造方法

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyView extends View {
//在代码中直接new MyView()实例的时候,会调用第一个构造方法
public MyView(Context context) {
super(context);
}
//在xml中布局文件中使用MyView的时候,会调用第二个构造函数;
//在xml中布局文件中使用了MyView,并且还有自定义属性的时候,也是第二个构造函数。
//当我们自定义属性了,通过obtainStyledAttributes,也是最终调用参数为3个的构造函数
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}

其中 int defStyleAttr : 这是当前 Theme 中包含的一个指向 style 的引用,当我们自定义属性时,默认从这个集合里面查找布局文件中配置属性值,传入0表示不向该 defStyleAttr 中查找值。

属性赋值优先级次序表:

1
在xml中直接定义 > 在xml中通过Style定义 > 自定义view所在Activity的 Theme中指定Style引用 > 构造函数中defStyleRes指定的默认值。
-------------本文结束感谢您的阅读-------------