0%

View绘制

要绘制东西,需要 4 个基本组件:存储像素点的 Bitmap、主持绘制的 Canvas、绘图的基本元素(Path,Rect,text,Bitmap等)、描述颜色和样式的 Paint。

View 绘制的一般流程:

  1. 缓存需要绘制的内容;
    1. 使用 Bitmap
    2. 存储坐标和绘制指示
  2. 新建一个 Canvas类:extraCanvas;
  3. 使用 extraCanvas 在 Bitmap上绘制内容;
  4. 在 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 是画笔。

1
2
3
4
5
6
7
8
9
10
11
12
// 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 类