首先总结一下这篇文章中的关键点:
- 自定义绘制的方式是重写绘制方法,其中最常用的是 onDraw()
- 绘制的关键是 Canvas 的使用
- Canvas 的绘制类方法: drawXXX() (关键参数:Paint)
- Canvas 的辅助类方法:范围裁切和几何变换
- 可以使用不同的绘制方法来控制遮盖关系
这里的知识点并不多,但大家可能也看出来了,我讲得并不细。这是因为知识点虽然不多,但细节还是很多的,仅仅靠一节分享不可能讲完。我会按照顺序把这些知识进行拆分,拆成几节来讲,你按照我的顺序学习下来,肯定会大有收获的。
开始的开始:onDraw()
自定义绘制的上手非常容易:提前创建好 Paint
对象,重写 onDraw()
,把绘制代码写在 onDraw()
里面,就是自定义绘制最基本的实现。
让我们画个圆看看:
public class DrawActivity extends View {
Paint paint = new Paint();
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(500,500,300,paint);
}
public DrawActivity(Context context, AttributeSet attrs) {
super(context,attrs);
}
完美运行。
Canvas.drawXXX() 和 Paint 基础
drawXXX()
系列方法和 Paint
的基础掌握了,就能够应付简单的绘制需求。它们主要包括:
-
Canvas
类下的所有draw-
打头的方法,例如drawCircle()
drawBitmap()
。 Paint
类的几个最常用的方法。具体是:
-
Paint.setStyle(Style style)
设置绘制模式 -
Paint.setColor(int color)
设置颜色 -
Paint.setStrokeWidth(float width)
设置线条宽度 -
Paint.setTextSize(float textSize)
设置文字大小 -
Paint.setAntiAlias(boolean aa)
设置抗锯齿开关
以上就是 Canvas
所有的简单图形的绘制。除了简单图形的绘制, Canvas
还可以使用 drawPath(Path path)
来绘制自定义图形。
drawPath(Path path, Paint paint) 画自定义图形
drawPath()
是可以绘制自定义图形。当你要绘制的图形比较特殊,使用简单的那些方法做不到的时候,就可以使用 drawPath()
来绘制。
drawPath(path)
这个方法是通过描述路径的方式来绘制图形的,它的 path
参数就是用来描述图形路径的对象。path
的类型是 Path
,使用方法大概像下面这样:
public class DrawActivity extends View {
Paint paint = new Paint();
Path path = new Path();//初始化path对象
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
path.addArc(200, 200, 400, 400, -225, 225);
path.arcTo(400, 200, 600, 400, -180, 225, false);
path.lineTo(400, 542);
canvas.drawPath(path,paint);
}
public DrawActivity(Context context, AttributeSet attrs) {
super(context,attrs);
}
画了个心形图形,完美运行。
Path
可以描述直线、二次曲线、三次曲线、圆、椭圆、弧形、矩形、圆角矩形。把这些图形结合起来,就可以描述出很多复杂的图形。
先写到这里,后面的内容我会继续更新。