Android自定义View-学习笔记(一)
自定义View基础知识
一、View的分类
Android基于View和ViewGroup,为Android开发者构建多样化UI提供了强大组件化模型。
类型 | 描述 | 特点 |
---|---|---|
View | 单一的View,如:TextView | 不包含子View |
ViewGroup | 一个视图容器,可以包含多个View,如:LinearLayout | 包含子View |
二、View类的认识
- View类是Android各种组件的基类
自定义View要继承View类或者View类的子类
- View类有4个构造函数
自定义View必须重写至少一个构造函数
构造函数具体如下:
/**
* 如果View是在代码里面new的,则调用第一个构造函数
*/
public Table(Context context) {
super(context);
}
/**
* 如果View是在.xml里声明的,则调用第二个构造函数
* 自定义属性是从AttributeSet参数传进来的
*/
public Table(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 不会自动调用
* 一般是在第二个构造函数里主动调用
* 如View有style属性时
*/
public Table(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
* API21之后才使用
* 不会自动调用
* 一般是在第二个构造函数里主动调用
* 如View有style属性时
*/
public Table(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
- 构造函数的参数
- Context - 上下文,View中随处都会用到
- AttributeSet - XML属性(当从XML inflate的时候)
- int defStyleAttr - 应用到View的默认风格(定义在主题中)
- int defStyleRes - 如果没有使用defStyleAttr,应用到View的默认风格
除了Context,其它参数是用来通过XML属性配置View的初始状态(从布局,style以及theme中)
- 关于自定义View的XML属性