进阶之旅(一)
2017-08-01 本文已影响0人
林天佐
前言:
从事Android开发一年半啦,只知道每天按照需求计划实现业务的逻辑,其实我知道我最差的就是绘制图形,所以从今天开始回炉重修,一点一滴重新学习,在这里记录一下。说些废话,最近在听一个广播节目,《自控力》,如今的社会真的是太浮躁啦,人们都是依赖电子产品入魔,倒是简书这里如一股清流,在这个浮躁的社会给了我一个明灯,比心,不是专业写博客的,所以排版有点乱。
工具:Androidstudio、夜神android模拟器
- 认识Point与Canvas,画笔与画布
- 认识Rect与RectF
先介绍Rect与RectF,下面会用到
相同点都是用于表示坐标系中的一块矩形区域,并可以对其做一些简单操作。这块矩形区域,需要用左上和右下两个坐标点表示。
区别就是精度不一样。Rect是使用int类型作为数值,RectF是使用float类型作为数值。两个类型提供的方法也不是完全一致。具体使用情况请阅读源码。
Paint:画笔
常用函数 | 函数简介 |
---|---|
setARGB(int a, int r, int g, int b) | 设置画笔的颜色,a代表透明度,r,g,b代表颜色值 |
setAlpha(int a) | 设置alpha不透明度,范围为0~255 |
setColor(int color) | 设置画笔颜色 |
setAntiAlias(boolean aa) | 是否抗锯齿 |
setTextSize(float textSize) | 字体大小 |
setStyle(Paint.style style) | 设置画笔的风格,Paint.Style. FILL :实心 Paint.Style.FILL_AND_STROKE:同时实心和空心、Paint.Style.STROKE:空心 |
Canvas:画布
常用函数 | 函数简介 |
---|---|
drawCircle(float cx, float cy, float radius,Paint paint) | 绘制圆形,参数1为中心点x轴位置、参数2为中心点y轴位置、参数3为圆形半径、参数4为画笔 |
drawLine(float startX, float startY, float stopX, float stopY, Paint paint) | 绘制直线,参数1为起点x轴坐标、参数2为起点y轴坐标、参数3为x轴终点坐标、参数4为y轴终点坐标、参数5为画笔 |
canvas.drawOval(new RectF(float left, float top, float right, float bottom), p) | 绘制矩形,其中RectF中前两个参数表示矩形左上角点的坐标,后两个参数标示右下角点的坐标 |
drawRect(RectF rect, Paint paint) | 绘制一块区域,参数一为RectF一个区域 |
drawPath(Path path, Paint paint) | 绘制一个路径,参数一为Path路径对象,通过Path设置路径的起点与终点,也可绘制特殊路径线条 例如:传说中的贝塞尔曲线,只需设置对应的控制节点 |
代码块
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint()
paint.setColor(Color.RED);// 设置红色
canvas.drawCircle(150, 150, 50, paint);// 小圆
paint.setAntiAlias(true);
paint.setARGB(50,0,0,225);
paint.setAntiAlias(false);
canvas.drawCircle(300, 300, 100, paint);// 大圆
RectF oval2 = new RectF(60, 100, 200, 240);// 设置个新的长方形,扫描测量
canvas.drawArc(oval2, 200, 130, false, paint);
//画贝塞尔曲线
paint.setTextSize(30);
canvas.drawText("画贝塞尔曲线:", 50, 310, paint);
paint.reset();
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.GREEN);
paint.setStrokeWidth(5);
Path path2=new Path();
path2.moveTo(100, 320);//设置Path的起点
path2.quadTo(350, 910, 670, 400); //设置贝塞尔曲线的控制点坐标和终点坐标
canvas.drawPath(path2, paint);//画出贝塞尔曲线
}
QQ图片20170802134116.png