要绘制东西,需要 4 个基本组件:存储像素点的 Bitmap、主持绘制的 Canvas、绘图的基本元素(Path,Rect,text,Bitmap等)、描述颜色和样式的 Paint。
View 绘制的一般流程:
- 缓存需要绘制的内容;
- 使用 Bitmap
- 存储坐标和绘制指示
- 新建一个 Canvas类:extraCanvas;
- 使用 extraCanvas 在 Bitmap上绘制内容;
- 在 onDraw(canvas: Canvas) 中,用
canvas.drawBitmap()
等方法,把图像展示到屏幕上。
Canvas 类
Canvas 主管绘制。
在 Android 中,有几种方法可以实现自定义 2D 图像和动画,如:使用drawable、使用 Canvas 类的一些方法。
Canvas 可以实现的一些操作:
- 用颜色填充整个 Canvas;
- 画一些几何形状;
- 进行一些变化,如:平移、缩放;
- 裁剪。
方法:
drawColor()
drawBitmap()
drawCircle()
translate()
scale()
clipRect()
drawText()
…
Bitmap 类
Bitmap 位图,存储要绘制的信息。
使用完,需要recycle()
。
Paint 类
Paint 是画笔。
// Set up the paint with which to draw.
private val paint = Paint().apply {
color = drawColor
// Smooths out edges of what is drawn without affecting shape.
isAntiAlias = true
// Dithering affects how colors with higher-precision than the device are down-sampled.
isDither = true
style = Paint.Style.STROKE // default: FILL
strokeJoin = Paint.Join.ROUND // default: MITER
strokeCap = Paint.Cap.ROUND // default: BUTT
strokeWidth = STROKE_WIDTH // default: Hairline-width (really thin)
}
Path 类
Path 是路径。
Path 类封装了一些由直线、贝赛尔曲线、立方曲线复合的几何路径。TA 可以被用作cavans.drawPath()
,根据 Paint 设置的不同,被填充或笔画,或者用于裁剪和在 path
上绘制文字。
TouchEvent
Shader 类
待