真的非常简单

运行效果截图:

说说几个常用的方法吧

画点

canvas.drawPoint(200, 200, mPaint);     //在坐标(200,200)位置绘制一个点
canvas.drawPoints(new float[]{          //绘制一组点,坐标位置由float数组指定
      500,500,
      500,600,
      500,700
},mPaint);

画线

 mPath.moveTo(100,500);起始点坐标mPath.lineTo(300,300); 结束点坐标,意思就是把这两个点用直线连接起来

或者

canvas.drawLine(300,100,600,400,paintAxes2);跟上面一张,只是写成了一个 x1y1 起始点坐标  x2y2结束点坐标

绘制曲线,方法很多种,这里列举两种

   mPath.moveTo(100,500);mPath.lineTo(300,300);mPath.quadTo(300,100,600,500);  //原来绘制曲线是这么绘制的啊
或者mPath.cubicTo(100,500,300,100,600,500);  //原来  x1 y1 就是把moveto移过来啊

这些参数第一次看的同学肯定懵了,一堆是啥意思呢,原来6个参数分别是x1  y1  ,x2  y2,x3 y3

x1y1表示起点坐标,x2y2表示中间点的坐标,x3y3表示结束点坐标,它们之间使用曲线进行连接,最后的效果就是一个平滑的曲线

剩下一堆一堆的,大家慢慢研究吧,详情请参考这位大神的博客,写的很好

http://www.gcssloop.com/customview/Canvas_BasicGraphics

package com.example.administrator.testz;import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;/*** Created by Administrator on 2018\9\14 0014.*/public class AudioView extends View {private Paint paintAxes;private Paint paintAxes2;private String[] xnums={"0","1","2","3","4","5","6","7","8","9","10"};private String[] ynums={"","100","200","300","400","500","600","700","800","900","1000"};private CharSequence charSequence;private static final int Max_Y = 580;private static final int Max_X = 1000;private static final int  startX = 40;private static final int  LINE_NUM = 10;public AudioView(Context context) {super(context);}public AudioView(Context context, AttributeSet attrs) {super(context, attrs);}public AudioView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);paintAxes = new Paint();paintAxes = new Paint();paintAxes.setStyle(Paint.Style.STROKE);paintAxes.setAntiAlias(true);paintAxes.setDither(true);paintAxes.setColor(ContextCompat.getColor(getContext(), R.color.colorAccent));paintAxes.setStrokeWidth(4);paintAxes2 = new Paint();paintAxes2.setStyle(Paint.Style.STROKE);paintAxes2.setDither(true);paintAxes2.setAntiAlias(true);paintAxes2.setColor(ContextCompat.getColor(getContext(), R.color.gray));paintAxes2.setTextSize(15);Path mPath = new Path();Rect textRec = new Rect(300,100,600,400);mPath.moveTo(100,500);//  mPath.lineTo(300,300);// mPath.quadTo(300,100,600,500);  //原来绘制曲线是这么绘制的啊mPath.cubicTo(100,500,300,100,600,500);  //原来  x1 y1 就是把moveto移过来啊canvas.drawPath(mPath,paintAxes);//画圆 分别是 x,y,半径,画笔for (int i = 1; i <= 2; i++) {// drawcircle这个参数是绘制圆形的canvas.drawCircle(500, 350, 50*i, paintAxes);}//  left  top right bottom  300  400//canvas.drawRect(textRec,paintAxes);//   canvas.drawLine(300,100,600,400,paintAxes2);//绘制X轴/*canvas.drawText(txtFirst,20,600,paintAxes2);canvas.drawText(txtLast,1000,600,paintAxes2);// canvas.drawLine(20,580,1000,580,paintAxes2);canvas.drawLine(20,580,20,20,paintAxes2);*///画表格for (int i = 1; i <= LINE_NUM; i++) {//画横线     Max_Y = 580   Max_X = 1000  startX = 20canvas.drawLine(startX,Max_Y/LINE_NUM*i,Max_X,Max_Y/LINE_NUM*i,paintAxes2);canvas.drawLine(startX,Max_Y,startX,startX,paintAxes2);canvas.drawLine((Max_X-startX)/LINE_NUM*i,Max_Y,(Max_X-startX)/LINE_NUM*i,startX,paintAxes2);}//画刻度for (int i = 0; i <= LINE_NUM; i++) {//画横线     Max_Y = 580   Max_X = 1000  startX = 20//               四个参数   显示内容  x坐标  y坐标   画笔//  canvas.drawText(txtLast,1000,600,paintAxes2);canvas.drawText(xnums[i],(Max_X-startX)/LINE_NUM*i,600,paintAxes2);canvas.drawText(ynums[10-i],0,Max_Y/LINE_NUM*i,paintAxes2);}//  Max_Y = 580   Max_X = 1000  startX = 20/*     for (int i = 1; i <= 5; i++) {mPath.moveTo(20, 580/5*i);mPath.lineTo(1000, 580/5*i);canvas.drawPath(mPath, paintAxes2);}
*/}
}

android自定义view(三)绘制表格和坐标系相关推荐

  1. Android自定义View 开发流程综合简述 Android自定义View(三)

    本文简述一下自定义View中常用方法 1 简述 自定义View可以认为是继承自View或者ViewGroup Android中的任何一个布局.任何一个控件其实都是直接或间接继承自View的,如Text ...

  2. android 自定义view画表格,Android自定义View实现课程表表格

    自己闲下来时间写的一个课表控件,使用的自定义LinearLayout,里面View都是用代码实现的,最终效果如下图,写的可能有问题希望多多指点 创建一个自定义LinearLayout 控件用来装载课程 ...

  3. 精通Android自定义View(八)绘制篇Canvas分析之绘制文本

    1 简述 绘制文字分为三种应用场景: 情况1:指定文本开始的位置 即指定文本基线位置 基线x默认在字符串左侧,基线y默认在字符串下方 情况2:指定每个文字的位置 情况3:指定路径,并根据路径绘制文字 ...

  4. 精通Android自定义View(十一)绘制篇Canvas分析之裁剪

    clipRect(int left, int top, int right, int bottom)  这个方法作用就是裁切一个矩形出来,但是图形不还是在canvas上面的,所以本质上还是裁切的can ...

  5. 精通Android自定义View(十)绘制篇Canvas分析之绘制Path

    1 Path常用方法简析 Path在2D绘图中是一个很重要的类. Path在这里可以绘制基本的图形,也可以绘制其他复杂的图形. 2 常用API解析与示例 2.1 xxxTo方法 Path类中提供了一套 ...

  6. 精通Android自定义View(九)绘制篇Canvas分析之绘制图片

    绘制图片分为:绘制矢量图(drawPicture)和 绘制位图(drawBitmap) 1 drawBitmap 1.1 基本的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,to ...

  7. 精通Android自定义View(十四)绘制水平向右加载的进度条

    1引言 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制三部曲综合 ...

  8. 精通Android自定义View(十二)绘制圆形进度条

    1 绘图基础简析 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制 ...

  9. 精通Android自定义View(十九)自定义圆形炫彩加载转圈效果

    1 效果 2 源码 public class JiondongView extends View {private Paint mBackgroundPaint;private float mScal ...

  10. Android自定义View:ViewGroup(三)

    自定义ViewGroup本质是什么? 自定义ViewGroup本质上就干一件事--layout. layout 我们知道ViewGroup是一个组合View,它与普通的基本View(只要不是ViewG ...

最新文章

  1. OpenAI 开放 GPT-3 微调功能,让开发者笑开了花
  2. Jquery zTree实例
  3. 企业CIO如何让IT部门成为价值中心
  4. boost::mp11::mp_partial_sum相关用法的测试程序
  5. vim QuickFix 窗口
  6. CSS3 Perspective
  7. pytorch实现常用的一些即插即用模块(长期更新)
  8. Sun公司网站上的Swing实例,想学Swing的不看后悔
  9. fiddler模拟低速网络
  10. 浙大 PAT b1017
  11. IntelliJ IDEA 远程deBug jar包
  12. scala从url或者其他数据源读取数据
  13. 五分钟学会安装电脑操作系统
  14. html编辑器怎么设置为excel,excel2013宏编辑器的设置方法教程
  15. 基于IBM Tivoli TSM系统构建某局备份系统实施方案
  16. python 删除pdf页面_删除PDF其中几页的方法
  17. 清华镜像源地址(国内下载python包必备地址)
  18. C++Primer 第10章 bind与迭代器
  19. web概念、B/C、C/S区别与优缺点以及网络通信三要素:IP、端口号、传输地址
  20. 北京住房公积金转杭州相关信息的整理,个人整理

热门文章

  1. python系列笔记--耗子(巨细)
  2. 如何打开java工程文件
  3. jQuery 一次定时器_记一次腾讯微信面试
  4. windows内网渗透PTH/PTK攻击
  5. linux物料管理,SAP-PM 工具管理篇之出入库
  6. 碎片化时间学习,这几个在线视频学习网站值得拥有!
  7. 火星南极有水,会有生命吗?
  8. 技术项目中的人、风险与应对方法
  9. win10系统ipv6服务器地址,win10系统查看电脑ipv6地址的操作方法
  10. 支付系统设计:银行卡支付