想要画出自定义控件需要画笔(Paint)和画布(Canvas)
一.Paint基础使用
//是否抗锯齿
void setAntiAlias(boolean aa)
//设置颜色
void setColor(int color)
//设置样式
void setStyle(Paint.Style style)
- Paint.Style.FILL:仅填充内部
- Paint.Style.STROKE:仅描边
- Paint.Style.FILL_AND_STROKE:填充内部与描边
//设置宽度
void setStrokeWidth(float width)
举例:
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(50);
二.Canvas基础使用
1.画直线
void drawLine(float startX, float startY, float stopX, float stopY, Paint paint)
- startX:起点X坐标
- startY:起点Y坐标
- stopX:终点X坐标
- stopY:终点Y坐标
2.画多条直线
//第一种方法
void drawLines(float[] pts, Paint paint)
举例
float[] pts={10,10,100,100,200,200,400,400};
canvas.drawLines(pts,paint);
上面有4个点,分别是{10,10} {100,100} {200,200} {400,400}两两连成一条直线,共有两条直线。
//第二种方法
void drawLines(float[] pts, int offset, int count, Paint paint)
- offset:跳过数值个数
- count:参与绘制个数
3.点
void drawPoint(float x, float y, Paint paint)
4.多个点
void drawPoints(float[] pts, Paint paint)
void drawPoints(float[] pts, int offset, int count, Paint paint)
使用方法与上文画线一致。
5.矩形工具Rect,RectF
Rect与RectF的构造方法基本一致。有直接构造或间接构造。
//直接构造
RectF rectF = new RectF(10, 100, 200, 400);
//间接构造
RectF rectF = new RectF();
rectF.set(10,100,200,400);
矩形的绘制方法
void drawRect(RectF rect, Paint paint)
void drawRect(Rect r, Paint paint)
6.圆角矩形
void drawRoundRect(RectF rect, float rx, float ry, Paint paint)
- rx:圆角的X轴半径
- ry:圆角的Y轴半径
7.圆形
void drawCircle(float cx, float cy, float radius, Paint paint)
- cx:圆心点的X轴半径
- cy:圆心点的Y轴半径
- radius:圆的半径
8.椭圆
void drawOval(RectF oval, Paint paint)
9.弧
void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
- startAngle:弧开始的角度
- sweepAngle:弧持续的角度
- useCenter:是否有弧的两边