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时就会使用第三种类型的构造方法

posted @ 2014-09-13 10:40  RoperLee  阅读(168)  评论(0)    收藏  举报