1 方式:重写绘制方法 最常用: onDraw()
-
自定义绘制的方式是重写绘制方法,其中最常用的是 onDraw()
-
绘制的关键是 Canvas 的使用
- Canvas 的绘制类方法: drawXXX() (关键参数:Paint)
- Canvas 的辅助类方法:范围裁切和几何变换
- 可以使用不同的绘制方法来控制遮盖关系
2 自定义绘制:
1.Canvas 的 drawXXX() 系列方法及 Paint 最常见的使用 Canvas.drawXXX() 是自定义绘制最基本的操作。掌握了这些方法,你才知道怎么绘制内容,例如怎么画圆、怎么画方、怎么画图像和文字。组合绘制这些内容,再配合上 Paint 的一些常见方法来对绘制内容的颜色和风格进行简单的配置,就能够应付大部分的绘制需求了。
2.Paint 可以做的事,不只是设置颜色,也不只是实心空心、线条粗细、有没有阴影,它可以做的风格设置是非常多、非常细。 例如:(
拐角要什么形状?
开不开双线性过滤?
加不加特效?)
3 Canvas 对绘制的辅助——范围裁切和几何变换。 范围裁切:几何变换:
4 使用不同的绘制方法来控制绘制顺序
控制绘制顺序解决的并不是「做不到」的问题,而是性能问题。同样的一种效果,你不用绘制顺序的控制往往也能做到,但需要用多个 View 甚至是多层 View 才能拼凑出来,因此代价是 UI 的性能;而使用绘制顺序的控制的话,一个 View 就全部搞定了。
自定义绘制的知识,大概就分为上面这四个级别。在你把这四个级别依次掌握了之后,你就是一个自定义绘制的高手了。它们具体的细节,今天这篇就是第一篇: Canvas.drawXXX() 系列方法及 Paint 最基本的使用。接下来我们要正式开始了?
一切的开始:onDraw()
自定义绘制的上手非常容易:提前创建好 Paint 对象,重写 onDraw(),把绘制代码写在 onDraw() 里面,就是自定义绘制最基本的实现。大概就像这样:
Paint paint = new Paint();
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 绘制一个圆
canvas.drawCircle(300, 300, 200, paint);
}
Java
就这么简单。所以关于 onDraw() 其实没什么好说的,一个很普通的方法重写,唯一需要注意的是别漏写了 super.onDraw()。
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)设置抗锯齿开关
你看到这里就已经可以去 Google 的官方文档里,打开 Canvas 和 Paint 的页面,把上面的这两类方法学习一下,然后今天的内容就算结束了。当然,这篇文章也可以关掉了。 附上官方地址: Canvas | Android Developers (google.cn) and Paint | Android Developers (google.cn)