关于越来越多的新手找不到自定义view的学习资料或者无法学会自定义view。
本篇专门讲解一下初级进阶必经之路,自定义view。。
我们先把自定义View细分一下,分为两种
A 自定义ViewGroup
B 自定义View
ViewGroup 就是个容器,
简单自定义我们一般采用继承特殊view或者ViewGroup 的方式。
比如做一个倒计时的Button
还有就是绘制的方式去绘制自己想要的view。
比如绘制圆角矩形作为Button背景
下面看下自定义view的步骤:
1、自定义View的属性
2、在View的构造方法中获得我们自定义的属性
3、重写onMesure
4、重写onDraw
view的属性定义在 res/ values/ 下建立一个attrs.xml文件中
<resources>
<declare-styleable name="MyView">
<attr name="textColor" format="color"/>
<attr name="textSize" format="dimension"/>
</declare-styleable>
</resources>
xmlns:my=http://schemas.android.com/apk/res/com.example.xhelloworld
<com.example.xhelloworld.MyView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
my:textColor="#FFFFFFFF"
my:textSize="22dp"
/>
前两部算是完成了。。。
接下来需要实现具体的MyView 类
根据需要一般采用继承特殊view或者ViewGroup 的方式。
重点强调构造函数:
如果要在布局文件中用到,还需要添加一个构造方法:
public MyView (Context context,AttributeSet attrs){
super(context, attrs);
}
如果写两个参数的构造函数,就需要先实现一个参数的构造函数
public class MyView extends TextView{
// 当在代码中创建对象时会被调用
public MyView (Context context) {
super(context);
}
}
这就是为什么需要这两个构造参数的原因。
时间问题先写到这,待续。。。。。