本篇接着上一篇的基础知识来说,今天要学点能看的见的东西了————绘制基础。
一、绘制的简要说明
自定义绘制最主要的点就是重写绘制方法,当我们定义一个类去继承自View这个类时,会让你必须重写几个构造方法和onDraw(Canvas canvas)方法,那我们最常用的绘制方法就是这个onDraw方法,参数需要一个Canvas对象,我们绘制的关键就是通过Canvas提供的各个api去进行绘制、裁剪以及几何变换,这些我会慢慢的进行整理。本篇既然是基础,那么这里就只讲关于绘制的方法,即是drawXXX()方法。先把必须的东西都一下说完,在详细介绍,所以在这里还需要用到一个画笔类:Paint,这个类提供的一些api可以让我们设置画笔的颜色、形状、阴影等等,通过Canvas和Paint的搭配使用之后,我们就可以绘制出各种丰富多彩的图形了。
二、常用api的说明
1、颜色填充
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//给View上色为粉红色
canvas.drawColor(getResources().getColor(R.color.pageColor));
}
这里直接调用drawColor()方法,参数填充颜色即可,效果如下:
2、绘制圆形及环形
先看个简单的,绘制一个实心圆,这里我们需要借助Paint对象了哦,首先实例化一个Paint对象,然后调用canvas.drawCircle(圆心横坐标,圆心纵坐标,半径,画笔对象)方法,各个参数的含义已经很明确了,其中Paint.Style.FILL是实心模式,Paint.Style.STROKE是线条即空心模式。对了,需要说明的一点是,这里的坐标系和我们平时在数学中学的两维坐标系不同,android中每个View自己有一个坐标系,原点是View左上角的那个点,水平方向为X轴,向右为正向左为负,竖直方向为Y轴,向下为正向上为负,盗了大神一张图,上图:
除了画实心圆,我们还可以画空心圆,画带有颜色的实心圆,画圆环等等,因为使用也比较简单我就不详细说明了,具体来看一下代码,已经给出了注释:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); //开启抗锯齿
//实心圆
canvas.drawCircle(100, 300, 50, paint);
//空心圆
paint.s