Android自定义view中必不可少的哪些方法和参数详解

来源:互联网 发布:java restful框架 编辑:程序博客网 时间:2024/06/16 22:31

经过第一篇的讲解我们基本知道自定义view的开发流程和参数属性,这里就来看一下我们自定义view必不可少的两个方法。但是我们不要忘了我们自定义view学习的过程,有了这个过程,我们才知道我们要学什么,该学什么,从哪里学起。

1.自定义view单纯的用画笔绘制view(死view)
2.自定义view增加手势
3.自定义view增加动画
4.自定义view手势动画交互     这4步让我们一步一步的来探索学习

这个过程我们要时刻谨记于心呀,时刻要知道自己处在哪个阶段,接下来应该学习什么,这样我们才会进步,才不会乱学一气,走火入魔呀。哈哈不扯了。

其实必不可少的方法就两个,一个是测量view的方法onMersure()绘制view的方法onDraw()

这两个方法是非常非常重要的然后就是这两个方法中的参数,那也是灵魂所在。

1.首先看下onMersure()方法,这个方法的作用就是测量我们的view的尺寸。

具体怎么测量我们要引入一个类 MeasureSpec 这个类中有三个属性,分别为

1.MeasureSpec.AT_MOST

   这个属性就是我们在布局文件中设置了wrap_content就是没有对view设置具体的宽高尺寸

2.MeasureSpec.EXACTLY

   这个属性就是我们对布局中的 view设置了具体的宽高尺寸即:

android:layout_width="200dp"
android:layout_height="200dp" 或者 match_parent,有具体的值
3.MeasureSpec.UNSPECIFIED

  这个属性就是对view没有限制,用的少

int widthMode = MeasureSpec.getMode(widthMeasureSpec);int heightMode = MeasureSpec.getMode(heightMeasureSpec);
这个方法就是获得当前view的MeasureSpec的类型,和1,2,3作比较。判断当前的view是否设置了具体的宽高尺寸:

int  widthSize= MeasureSpec.getSize(widthMeasureSpec);int heightSize= MeasureSpec.getSize(heightMeasureSpec);
这是获得view的尺寸、例子:

@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {    super.onMeasure(widthMeasureSpec, heightMeasureSpec);    int widthMode = MeasureSpec.getMode(widthMeasureSpec);    int heightMode = MeasureSpec.getMode(heightMeasureSpec);    int  widthSize= MeasureSpec.getSize(widthMeasureSpec);    int heightSize= MeasureSpec.getSize(heightMeasureSpec);    if (widthMode==MeasureSpec.AT_MOST&&heightMode==MeasureSpec.AT_MOST){        widthSize = R.dimen.pwidth;        heightSize = R.dimen.pheight;    }    //把宽高尺寸设置到view中去    setMeasuredDimension(widthSize,heightSize);}
这里就是我们对 view 的宽高的测量了。然后就是拿到这个宽高 到 onDraw()方法里面去使用:

2.onDraw()方法的使用

@Overrideprotected void onDraw(Canvas canvas) {    super.onDraw(canvas);    }
这里就是我们绘制view的地方,,canvas 就是 画布。拿到上面的宽高到此方法中去绘制 我们的view的形状和尺寸。

其中有这两个方法重画我们的view:

postInvalidate(); 这个方法针对子view,重画
invalidate(); 这个就是重画我们的view

通过这两篇的讲解,下一篇就能开始我们的自定义view 的 实战例子了,,,加油---期待下一篇,更新中。。



原创粉丝点击