Android 自定义View
我们已经知道在Android中允许自定义View组件,那么就有这样的一个问题:
我们自定义的View组件就是继承View类,那么在这个子类中的构造方法中就必须先调用View类中的 构造方法;
在View中有三个构造方法分别是:
View(Context context)
Simple constructor to use when creating a view from code.
View(Context context, AttributeSet attrs)
Constructor that is called when inflating a view from XML.
View(Context context, AttributeSet attrs, int defStyleAttr)
Perform inflation from XML and apply a class-specific base style.
从下面的解释中,我们就会发现:
①如果我们通过使用java代码来创建组建的时候,那么使用第一个构造方法就行了
②如果我们通过XML来创建组件的话,就必须使用第二个或者第三个构造方法
所以,这就提醒我们,在我们写自定义的组件时的时候这几种参数的构造方法都要写一下,避免因为
缺少在指定情况下调用的构造方法,而造成错误;实际上,如果我们确实丢了每个构造方法,编译阶
段并不会有任何的提示,只有等到程序运行起来的时候,需要调用某种参数类型的构造方法时发现没
有定义这个类型的构造方法,才会出现错误,所以这一点要提高警惕
示例:《疯狂Android》 P 48 中的自定义的组件DrawView就是这样,其中定义了两个构造方法
这样一来不论是通过XML来创建这个组件,还是通过java代码来创建的话,就都不会出现问题
其实最好将第三种构造方法也加上,当通过XML并且指定Style时就会使用第三种类型的构造方法

浙公网安备 33010602011771号