自定义控件View的使用

来源:互联网 发布:mac怎么强制退出软件 编辑:程序博客网 时间:2024/05/29 19:29

                         自定义View的使用

我们都可以自己使用自定义来自己绘制一些我们想要的一些东西,在这里我们就可以使用自定义的View来完成我们想要实现的

这些样式,使用起来也非常的简单方便,我们可以设置我们喜欢的一些样式,绘制我们想要的一下样式,我们要注意下自定义View的属性

还有在使用它的时候要重新的方法onMesure()方法和onDraw()方法,在这里我们重写了onDraw()方法,有的时候可以不用重写onMesure()方法,

但有的时候还是需要重写的,我们这里就不使用它了

package test.bwei.com.zidingyiview;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View; 我们在使用自定义View的时候要继承的就是这个View,因为要使用的画笔什么的,都是在这个View里 所以我们首先要继承View,在继承View之后可以重新四个方法,在这里我们就实例化了三个 在每个实例化出来的方法中都添加了一个init()方法 public class ZiDingYi extends View{  //使用画笔的时候要先实例化一个Paint对象,使用paint来对我们要使用的样式来操作     Paint paint; //在类中直接使用new关键字实例化控件时使用的构造方法,这个方法是比较常用的,我们在自定义   View的时候都要使用这个构造方法来使用我们的new 关键字实例化控件.  public ZiDingYi(Context context) {        super(context);        init();    }// 在布局文件中创建的控件 使用的是第二个构造方法,这个方法是我们想通过绘制的方式自己自定义   控件的时候使用的,比如我们想要自己定义一个Button按钮或者一个TextView控件什么的,就是   通过这个方法来进行操作的. public ZiDingYi(Context context, AttributeSet attrs) {        super(context, attrs);        init();    }    public ZiDingYi(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        init();    } //创建出来这个init()方法,在这个方法里面把Paint对象实例化出来,因为你看我们是要画图形的,那么我们首先得   先有一个画笔来绘制图形,我们使用画笔可以绘制任意图形,就是什么样式的图我们都能够通过画笔给绘制出来,   为了条理更加清晰,而且我们在上面重新的方法中也要调用这个方法,所以我们就把这个东西封装成一个方法,   在这个方法中进行绘制.  public void init(){ //把画笔的对象实例化出来 paint=new Paint();        //抗锯齿  通过画笔我们就可以设置各种我们想要的样式了,因为属性有很多,在这里就不为大家一一的列举了,样式都是这样   的大家要想设置其他的一些属性可以自己去查一下属性,按照格式就可以绘制了,在这个方法里只需要绘制我们想   要的样式就可以了,我们会在使用画笔的时候在画布上绘制出来. paint.setAntiAlias(true);       //设置画笔的颜色是红色        paint.setColor(Color.RED);      //设置画笔的粗细 paint.setStrokeWidth(10);    }          @Override//canvas是画布对象//使用画布对象开始使用画笔就可以设置设置我们喜欢的样式了,可以根据自己想要的样式,去调用不同的方法来实现, //在我们设置完一个样式后我们还可以再次调用画笔改变我们想要的样式,可以继续设置画笔属性,然后还能继续在画布上//设置我们想要的样式了,然后拼接起来之后可以绘制成一个图片,我就试着画了一个机器人的样式,不过失败了,哈哈,//不过你们都那么优秀,一定可以绘制出更好看的图型的. protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawLine(0,0,150,150,paint);        canvas.drawLine(0,100,300,300,paint);        paint.setColor(Color.BLUE);        paint.setStyle(Paint.Style.STROKE);        canvas.drawCircle(300,300,150,paint);        Bitmap bit= BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher);        canvas.drawBitmap(bit,300,250,paint);    }}
原创粉丝点击