Android自定义View绘制的方法及过程(二)
上一篇《Android自定义View(一)Paint、Rect、Canvas介绍》讲了最基础的如何自定义一个View,以及View用到的一些工具类。下面讲下View绘制的方法及过程
publicclassMyViewextendsView{
privateStringTAG="--------MyView";
privateintwidth,height;
publicMyView(Contextcontext,AttributeSetattrs){
super(context,attrs);
Log.i(TAG,"MyView()");
}
@Override
protectedvoidonSizeChanged(intw,inth,intoldw,intoldh){
super.onSizeChanged(w,h,oldw,oldh);
width=w;
height=h;
Log.i(TAG,"onSizeChanged()");
}
@Override
protectedvoidonDraw(Canvascanvas){
super.onDraw(canvas);
Log.i(TAG,"onDraw()");
Rectrect=newRect(0,0,width,height);
Paintpaint=newPaint();
paint.setColor(Color.RED);
canvas.drawRect(rect,paint);
}
@Override
protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
Log.i(TAG,"onMeasure()");
}
@Override
protectedvoidonFinishInflate(){
super.onFinishInflate();
Log.i(TAG,"onFinishInflate()");
}
}
03-1501:28:53.11130961-30961/com.myViewI/--------MyView:MyView()
03-1501:28:53.11130961-30961/com.myViewI/--------MyView:onFinishInflate()
03-1501:28:53.21030961-30961/com.myViewI/--------MyView:onMeasure()
03-1501:28:53.21030961-30961/com.myViewI/--------MyView:onMeasure()
03-1501:28:53.52030961-30961/com.myViewI/--------MyView:onMeasure()
03-1501:28:53.52030961-30961/com.myViewI/--------MyView:onMeasure()
03-1501:28:53.52030961-30961/com.myViewI/--------MyView:onSizeChanged()
03-1501:28:53.54330961-30961/com.myViewI/--------MyView:onDraw()
1、MyView()构造方法,这个不做解释,铁定第一个被调用。
作用:传入Context
2、onFinishInflate()当View中所有的子控件均被映射成xml后触发
3、onMeasure()在View放置到父容器时调用
作用:测量View的大小,也可以通过下面方式,修改View的大小
@Override
protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
setMeasuredDimension(100,100);
}
也可以通过以下方式获取控件的宽和高
@Override
protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
intwidth=MeasureSpec.getSize(widthMeasureSpec);
intheight=MeasureSpec.getSize(heightMeasureSpec));
}
4、onSizeChanged()在控件大小发生改变时调用。所以这里初始化会被调用一次
作用:获取控件的宽和高度
5、onDraw()最后就是绘制图形了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。