1.构造函数

构造函数是View的入口,可以用于初始化一些的内容,和获取自定义属性。

View的构造函数有四种重载分别如下:

public void SloopView(Context context) {}
public void SloopView(Context context, AttributeSet attrs) {}
public void SloopView(Context context, AttributeSet attrs, int defStyleAttr) {}
public void SloopView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {}

有四个参数的构造函数在API21的时候才添加上,暂不考虑。

有三个参数的构造函数中第三个参数是默认的Style,这里的默认的Style是指它在当前Application或Activity所用的Theme中的默认Style,且只有在明确调用的时候才会生效。
**注意:即使你在View中使用了Style这个属性也不会调用三个参数的构造函数,所调用的依旧是两个参数的构造函数。

由于三个参数的构造函数第三个参数一般不用,暂不考虑,第三个参数的具体用法会在以后用到的时候详细介绍。**
排除了两个之后,只剩下一个参数和两个参数的构造函数,他们的详情如下:

//一般在直接New一个View的时候调用。
public void SloopView(Context context) {}

//一般在layout文件中使用的时候会调用,关于它的所有属性(包括自定义属性)都会包含在attrs中传递进来。
public void SloopView(Context context, AttributeSet attrs) {}

2.Paint画笔

Paint mPaint = new Paint();
        mPaint.setColor(Color.RED);
        //mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStyle(Paint.Style.FILL);
        //设置画笔宽度为10px
        mPaint.setStrokeWidth(10f);

画笔有三种模式,如下:

STROKE //描边

FILL //填充

FILL_AND_STROKE //描边加填充

其中FILL和STROKE的结合就是FILL_AND_STROKE

android里面设置的函数会马上执行么 android 构造函数_android

3.Canvas

//绘制点,指定点的坐标和画笔
        canvas.drawPoint(400,100,mPaint);
        //绘制线,指定线的两端坐标和画笔
        canvas.drawLine(400,200,600,300,mPaint);
        //画矩形,指定左上角和右下角坐标和画笔
        canvas.drawRect(400,400,600,600,mPaint);
        //画带圆角的矩形,初始化一个ReceF指定坐标
        //指定圆角弧度和画笔
        RectF rectF = new RectF(400,700,600,800);
        canvas.drawRoundRect(rectF,30,30,mPaint);
        //绘制椭圆,实际上就是绘制一个矩形的内切图形
        RectF rectF1 = new RectF(400, 900, 600, 1000);
        canvas.drawOval(rectF1,mPaint);
        //绘制圆,前两个是圆心坐标,第三个是半径
        canvas.drawCircle(500,1200,100,mPaint);

android里面设置的函数会马上执行么 android 构造函数_android_02

//绘制椭圆的圆弧
        RectF rectF = new RectF(100,100,800,400);
        // 绘制背景矩形
        mPaint.setColor(Color.GRAY);
        canvas.drawRect(rectF,mPaint);
        // 绘制圆弧
        mPaint.setColor(Color.BLUE);
        //0——90指角度
        canvas.drawArc(rectF,0,90,false,mPaint);

        //-------------------------------------

        RectF rectF2 = new RectF(100,600,800,900);
        // 绘制背景矩形
        mPaint.setColor(Color.GRAY);
        canvas.drawRect(rectF2,mPaint);
        // 绘制圆弧
        mPaint.setColor(Color.BLUE);
        canvas.drawArc(rectF2,0,90,true,mPaint);

android里面设置的函数会马上执行么 android 构造函数_android_03

//绘制正圆圆弧
        RectF rectF = new RectF(100,100,600,600);
        // 绘制背景矩形
        mPaint.setColor(Color.GRAY);
        canvas.drawRect(rectF,mPaint);
        // 绘制圆弧
        mPaint.setColor(Color.BLUE);
        canvas.drawArc(rectF,0,90,false,mPaint);

        //-------------------------------------

        RectF rectF2 = new RectF(100,700,600,1200);
        // 绘制背景矩形
        mPaint.setColor(Color.GRAY);
        canvas.drawRect(rectF2,mPaint);
        // 绘制圆弧
        mPaint.setColor(Color.BLUE);
        canvas.drawArc(rectF2,0,90,true,mPaint);

android里面设置的函数会马上执行么 android 构造函数_android_04