首先总结一下这篇文章中的关键点:
- 自定义绘制的方式是重写绘制方法,其中最常用的是 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
可以描述直线、二次曲线、三次曲线、圆、椭圆、弧形、矩形、圆角矩形。把这些图形结合起来,就可以描述出很多复杂的图形。
先写到这里,后面的内容我会继续更新。