Android 自定义View Paint

上一篇说了自定义view的坐标系以及view 的使用,下面说下自定义view Paint 的使用

Paint 相对于画笔 ,可以使用Paint 来决定画的内容的颜色,边距粗细,设置样式,字体大小 ,等等

Paint 是和Canvas结合使用的,就相当于如果只有画笔没有纸是画不出来画的

Paint 方法在android developers 网站粗略计算了100种方法还要靠上,就不打算列举出来了,遇到不懂的上去查查就行

developers Paint 地址

下面说下自己常用的属性的几种

      // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(50);
        //设置画笔文字大小
        paint.setTextSize(100f);
        //设置阴影
        paint.setShadowLayer(400, 0, 0, Color.BLACK);

下面绘制一些常见的图形

1 绘制一个点

Android 自定义View Paint_第1张图片

代码如下

假如我们在view 下面 初始化了Paint

// paint 初始化
private Paint paint = new Paint();

为了方便下面的代码初始化就没有贴出,为了方便查看都放到一起了,还有下面的canvas 是使用onDraw 方法里面的canvas

   @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

    }

 这里为了简化一些就不再贴出全部的代码了,下面开始正题

   // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(10);
        // 绘制点
        canvas.drawPoint(50, 50, paint);

2 绘制一条直线

Android 自定义View Paint_第2张图片

代码如下

 // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(10);
        // 绘制实线
        canvas.drawLine(80, 80, 800, 80, paint);

3 绘制一个正方形

Android 自定义View Paint_第3张图片

代码如下

 // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(10);
        // 绘制正方形
        canvas.drawRect(100, 100, 600, 300, paint);

4 修改Paint 属性 画一个边框的正方形把 Paint 的属性改为STRKE 即可

Android 自定义View Paint_第4张图片

  // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.STROKE);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(10);
        // 绘制正方形
        canvas.drawRect(100, 100, 600, 300, paint);

5 绘制一个圆

Android 自定义View Paint_第5张图片

代码如下

 // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.FILL);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(10);
        // 绘制圆形
        canvas.drawCircle(500, 500, 400, paint);

6 修改Paint 属性 画一个边框的圆形形把 Paint 的属性改为STRKE 即可

Android 自定义View Paint_第6张图片

代码如下

 // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.STROKE);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(10);
        // 绘制圆形
        canvas.drawCircle(500, 500, 400, paint);

7 修改边距的宽度绘制一个圆环

Android 自定义View Paint_第7张图片

代码如下

  // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.STROKE);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(200);
        // 绘制圆形
        canvas.drawCircle(400, 400, 300, paint);

8 绘制一个椭圆

Android 自定义View Paint_第8张图片

代码如下

  // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.FILL);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
//        paint.setStrokeWidth(10);
        // 绘制椭圆
        canvas.drawOval(100, 500, 600, 200, paint);

9 修改Paint 属性 画一个边框的椭圆形把 Paint 的属性改为STRKE 即可

Android 自定义View Paint_第9张图片

  // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.STROKE);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(10);
        // 绘制椭圆
        canvas.drawOval(100, 500, 600, 200, paint);

10 绘制文字

Android 自定义View Paint_第10张图片

   // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.STROKE);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(10);
        //设置画笔文字大小
        paint.setTextSize(100f);
        // 绘制文字
        canvas.drawText("我是胡小牧", 100, 100, paint);

11 绘制带阴影的圆

Android 自定义View Paint_第11张图片

代码如下

  // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.FILL);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        //设置描边宽度
        paint.setStrokeWidth(10);
        //设置阴影
        paint.setShadowLayer(400, 0, 0, Color.BLACK);
        // 绘制圆形
        canvas.drawCircle(400, 400, 300, paint);

还有很多的效果如果感兴趣可以试下,比如:setStrokeCap 设置线帽

  // 设置抗锯齿效果 true是去边缘会将锯齿模糊化
        paint.setAntiAlias(true);
        // 设置画笔的style (Paint.Style.FILL填充,Paint.Style.STROKE描边,Paint.Style.FILL_AND_STROKE填充加描边  )
        paint.setStyle(Paint.Style.FILL);
        // 设置画笔的颜色
        paint.setColor(Color.RED);

        //设置描边宽度
        paint.setStrokeWidth(50);

        // 无线帽
        paint.setStrokeCap(Paint.Cap.BUTT);
        // 绘制直线
        canvas.drawLine(100, 200, 400, 200, paint);
        // 方形线帽
        paint.setStrokeCap(Paint.Cap.SQUARE);
        // 绘制直线
        canvas.drawLine(100, 400, 400, 400, paint);
        // 圆形线帽
        paint.setStrokeCap(Paint.Cap.ROUND);
        // 绘制直线
        canvas.drawLine(100, 600, 400, 600, paint);

效果图如下

Android 自定义View Paint_第12张图片

 

你可能感兴趣的:(Android,自定义View)