进阶之旅(一)

前言:

从事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);//画出贝塞尔曲线
    
    }
7077845-9c789751a8ca33dc.png
QQ图片20170802134116.png
天会亮就会黑 我早就习惯
原文地址:https://www.cnblogs.com/ltzuo/p/12159022.html