看了APIDemo->View->Custom的代码。
第一眼看过去这些代码还以为是一个很简单的TextView,但在翻到XML文件后,发现这个View是自定义的View,该View的定义放在view包的LabelView.java内,还是很有学习的价值的
。这个Demo主要包括view包的CustomView1.java,LabelView.java,layout中的custom_view_1.xml,res中的attrs.xml。
代码不贴了,每个版本的SDK里都带有的,我上面已经列出来了。
在XML布局文件中使用自定义View主要有以下几个要点:
1、XML布局文件,标签名要包含完整的包名、类名
2、自定义的对象中如果需要用到不属于View类自带的标签名,需要在res/values下新建一个attrs.xml文件,将这些标签名的格式包含进去,写法参照中APIDemo的例子。使用自定义的标签时,前缀为app:,区别于系统自带的android:。
3、新建了attrs.xml文件后,在R文件下才会生成styleable。
4、要让自定义的View的XML标签起作用,在代码里,必须重写构造函数View(Context, AttributeSet)方法。
5、重写的构造方法中,使用obtainStyledAttributes得到XML里的变量的集合,第二个参数名为在attrs.xml里写的style name。返回值为TypedArray类型。每种类型的变量都有相应的方法得到(不要傻傻地自己去转换= =!!)。得到的值记得判断是否为空值。
6、构造函数最后要使用recycle方法,将得到的TypedArray回收。
7、记得重写onDraw方法。