最近发现自己对Android的学习只在表面,并没有深入的理解,我不喜欢这种感觉,而且没有自己的理解,学习到的内容也很难为我所用.
所以从本次开始,我要写点自己理解的东西,但要对知识有自己的理解,那就必须深入了解它的原理.而我觉得Android的自定义View是一个很好的入口.
学会如何自定义View,能够了解Android系统中View使如何创建和维护的.这有助于我们学习Android的View的基本机制,也能解决我们日常开发的需求.
接下来我们一起来对自定义View中的各个部分做详细的研究,现在我们先从View的构造函数入手.
自定义View的构造函数
自定义View最基础的方式就是创建一个继承于View
或其子类的类,并且最少重写父类的一个构造函数.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30/**
*/
public class MyView extends View {
/**
* 在代码中使用new关键字创建View时会调用
* @param context
*/
public MyView(Context context) {
super(context);
}
/**
* 在layout文件声明View时会调用,只有实现了这个构造函数才能在布局文件中声明此自定义View
* @param context
* @param attrs 存有View在xml布局文件中的自定义的属性
*/
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 与第二个构造函数不同的地方在于,此构造函数可以指定View的默认样式
* @param context
* @param attrs
* @param defStyleAttr 是当前theme中包含的指向View的样式资源的属性(0代表此参数无效)
*/
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}