Android 自定义View(控件) 中的构造方法详解
程序员文章站
2022-03-14 10:34:43
Android 自定义View的构造方法详解4个构造方法构造方法中的参数实际使用中的写法4个构造方法例:自定义一个类public class TestView extends View { //第一个构造方法 //在java代码里声明一个View时候所用(new的时候会用到) public TestView(Context context) { super(context); } //第二个构造方法 //在xml布局文件中使用时自...
4个构造方法
例:自定义一个类
public class TestView extends View {
//第一个构造方法
//在java代码里声明一个View时候所用(new的时候会用到)
public TestView(Context context) {
super(context);
}
//第二个构造方法
//在xml布局文件中使用时自动调用
public TestView(Context context, AttributeSet attrs) {
super(context, attrs);
}
//第三个构造方法
//不会自动调用,如果有默认style时,在第二个构造函数中调用
public TestView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
//第四个构造方法
//不会自动调用,API >21时才能使用,如果有默认style时在第二个构造函数中调用
public TestView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
一般使用前三个构造方法就可以了
构造方法中的参数
参数 | 说明 |
---|---|
context | 上下文 |
attrs | 我们在XML中配置的属性集合 |
defStyleAttr | 当前主题中的一个属性,为视图提供默认值的样式资源. 只要在主题中对这个属性赋值,该View就会自动应用这个属性的值 |
defStyleRes | 提供视图默认值的样式资源的资源标识符,只有在第三个参数defStyleAttr为0,或者主题中没有找到这个defStyleAttr属性的赋值时,才可以启用!而且这个参数不再是属性了,而是真正的style。其实这也是一种低级别的“默认主题”,即在主题未声明属性值时,我们可以主动的给一个style,使用这个构造函数定义出的View,其主题就是这个定义的defStyleRes |
属性可以在多个地方进行赋值,优先级为:XML直接定义 > XML中style引用 > defStyleAttr > defStyleRes > theme直接定义
实际使用中的写法
例:
public class TestView extends View {
//第一个构造方法调用第二个构造方法
public TestView(Context context) {
this(context, null);
}
//第二个构造方法调用第三个构造方法
public TestView(Context context, AttributeSet attrs) {
thi(context, attrs, 0);
}
//第三个构造方法调用第四个构造方法
public TestView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr, 0);
//如果只使用三个构造方法,无论使用前面的哪种构造方法,最终都会调用此构造方法;在此构造方法中进行初始化操作
}
//第四个构造方法
public TestView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
//如果使用了四个构造方法,无论使用前面的哪种构造方法,最终都会调用此构造方法;在此构造方法中进行初始化操作
}
}
本文地址:https://blog.csdn.net/weixin_45558166/article/details/110262704
上一篇: 获取安卓应用页面元素的方式
下一篇: Android形状图形的定义
推荐阅读
-
Android自定义View中attrs.xml的实例详解
-
Java中的构造方法this、super的用法详解
-
浅谈Android开发中ListView控件性能的一些优化方法
-
Android中控件GridView实现设置行列分割线的方法示例
-
Android viewpager中动态添加view并实现伪无限循环的方法
-
Spring Data MongoDB中实现自定义级联的方法详解
-
Android中oncreate中获得控件高度或宽度的实现方法
-
Android编程自定义进度条颜色的方法详解
-
详解Android中Notification的使用方法
-
详解 Android中Libgdx使用ShapeRenderer自定义Actor解决无法接收到Touch事件的问题