上一篇说了自定义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 绘制一个点
代码如下
假如我们在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 绘制一条直线
代码如下
// 设置抗锯齿效果 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 绘制一个正方形
代码如下
// 设置抗锯齿效果 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 即可
// 设置抗锯齿效果 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 绘制一个圆
代码如下
// 设置抗锯齿效果 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 即可
代码如下
// 设置抗锯齿效果 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 修改边距的宽度绘制一个圆环
代码如下
// 设置抗锯齿效果 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 绘制一个椭圆
代码如下
// 设置抗锯齿效果 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 即可
// 设置抗锯齿效果 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 绘制文字
// 设置抗锯齿效果 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 绘制带阴影的圆
代码如下
// 设置抗锯齿效果 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);
效果图如下