自定义View的步骤如下。
自定义View的属性。
在自定义View类的构造方法中获得View属性值。
在自定义View类重写onMeasure(int,int)方法。
在自定义View类重写onDraw(Canvas canvas)方法。
在xml布局文件中布局自定义View类。
(1)自定义View的属性
在res/values下面新建attrs.xml属性文件。
自定义属性分两类:定义公共属性和定义控件的主题样式。
上面的XML文件第一部分是公共的属性,第二部分是自定义控件MyCustomView的主题样式,该主题样式里的属性必须包含在公共属性中。言外之意就是公共属性可以被多个自定义控件主题样式使用。format字段后面的属性单位基本包括如下几个:dimension(字体大小)、string(字符串)、color(颜色)、boolean(布尔类型)、float(浮点型)、integer(整型)、enmu(枚举)、fraction(百分比)等。
(2)自定义View一般需要选择实现的三个构造方法
从代码中不难看出,这三个构造方法是一层调用一层的,具有递进关系,因此,我们只需要在最后一个构造方法中获得View的属性。(www.xing528.com)
(3)自定义View一般需要重写onMeasure(int,int)和onDraw(Canvas canvas)方法
Measure过程用于计算视图大小,View类Measure过程相关方法主要有以下三个。
public final void measure(int widthMeasureSpec,int heightMeasureSpec)
protected final void setMeasuredDimension(int measuredWidth,int measuredHeight)
protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec)
measure调用onMeasure,onMeasure测量宽度、高度,然后调用setMeasureDimension保存测量结果,measure、setMeasureDimension是final类型,view的子类不需要重写,onMea-sure在View的子类中重写。
onDraw过程主要利用前两步得到的参数,将视图显示在屏幕上,到这里也就完成了整个视图绘制工作。
public void draw(Canvas canvas)
protected void onDraw(Canvas canvas)
通过调用draw函数进行视图绘制,在View类中onDraw函数是个空函数,最终的绘制需求要在自定义的onDraw函数中实现。
(4)布局中使用自定义View
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。