资源描述:
《android 自定义控件的过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、android自定义控件的过程invalidate()会导致computeScroll()以及onDraw()方法的执行computeScroll()方法是在屏幕流动的时候不停的去调用,scrollTo(intx,inty)则是滚动到相应的位置;scrollBy(intx,inty)则是移动一些距离,X为正是向左移动,为负时向右移动,Y与X的意义一个,只是是上下移动而已View对象显示在屏幕上,有几个重要步骤:1.构造方法创建对象2.测量View的大小onMeasure(int,int);3.确定View的位置,View自身有一些权,决定权在父View手中.onL
2、ayout();基本上不常用,在继承View的时候基本上用不着,但在继承ViewGroup的时候的就要用到了,因为要对View进行布局,确定View的位置,确定的时候使用指定子View的位置,左,上,右,下,是指在ViewGroup坐标系中的位置view.layout(intxtop,intytop,intxbottom,intybottom);4.绘制View的内容onDraw(Canvas)实现过程:1、构造方法:/***在布局文件中声名的view,创建的时候由系统调用**@paramcontext*上下文对象*@paramattrs*属性集*/publicM
3、yToggleButton(Contextcontext,AttributeSetattrs){super(context,attrs);initView();}2、测量View的大小:/***测量尺寸时的回调方法*/@OverrideprotectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){//super.onMeasure(widthMeasureSpec,heightMeasureSpec);/***设置当前View的大小Width:view的宽度Height:view的调度(单位:像素
4、)*/setMeasuredDimension(backgroundBitmap.getWidth(),backgroundBitmap.getHeight());}3、确定View的位置1、这是继承View的时候,一般不需要进行处理/***确定位置的时候调用此方法自定义View的时候作用不大*/@OverrideprotectedvoidonLayout(booleanchanged,intleft,inttop,intright,intbottom){super.onLayout(changed,left,top,right,bottom);}2、这是继承Vi
5、ewGroup的时候,这个时候就要确定ViewGroup里面各个View的位置了/***对子View进行布局,确定子View的位置changed若为true,则说明布局发生了变化ltrb*是指当前ViewGroup在其父View中的位置*/@OverrideprotectedvoidonLayout(booleanchanged,intl,intt,intr,intb){for(inti=0;i6、指在ViewGroup坐标系中的位置view.layout(i*getWidth(),0,(i+1)*getWidth(),getHeight());}}4、绘制View的内容:@OverrideprotectedvoidonDraw(Canvascanvas){/***lefe图片的左边界top图片的上边界paint绘制图片要使用的画笔*///绘制背景canvas.drawBitmap(backgroundBitmap,0,0,paint);//绘制可滑动的按钮canvas.drawBitmap(slideBtn,slideBtn_left,0,paint);}