android自定义view(三)绘制表格和坐标系
真的非常简单
运行效果截图:
说说几个常用的方法吧
画点
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(三)绘制表格和坐标系相关推荐
- Android自定义View 开发流程综合简述 Android自定义View(三)
本文简述一下自定义View中常用方法 1 简述 自定义View可以认为是继承自View或者ViewGroup Android中的任何一个布局.任何一个控件其实都是直接或间接继承自View的,如Text ...
- android 自定义view画表格,Android自定义View实现课程表表格
自己闲下来时间写的一个课表控件,使用的自定义LinearLayout,里面View都是用代码实现的,最终效果如下图,写的可能有问题希望多多指点 创建一个自定义LinearLayout 控件用来装载课程 ...
- 精通Android自定义View(八)绘制篇Canvas分析之绘制文本
1 简述 绘制文字分为三种应用场景: 情况1:指定文本开始的位置 即指定文本基线位置 基线x默认在字符串左侧,基线y默认在字符串下方 情况2:指定每个文字的位置 情况3:指定路径,并根据路径绘制文字 ...
- 精通Android自定义View(十一)绘制篇Canvas分析之裁剪
clipRect(int left, int top, int right, int bottom) 这个方法作用就是裁切一个矩形出来,但是图形不还是在canvas上面的,所以本质上还是裁切的can ...
- 精通Android自定义View(十)绘制篇Canvas分析之绘制Path
1 Path常用方法简析 Path在2D绘图中是一个很重要的类. Path在这里可以绘制基本的图形,也可以绘制其他复杂的图形. 2 常用API解析与示例 2.1 xxxTo方法 Path类中提供了一套 ...
- 精通Android自定义View(九)绘制篇Canvas分析之绘制图片
绘制图片分为:绘制矢量图(drawPicture)和 绘制位图(drawBitmap) 1 drawBitmap 1.1 基本的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,to ...
- 精通Android自定义View(十四)绘制水平向右加载的进度条
1引言 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制三部曲综合 ...
- 精通Android自定义View(十二)绘制圆形进度条
1 绘图基础简析 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制 ...
- 精通Android自定义View(十九)自定义圆形炫彩加载转圈效果
1 效果 2 源码 public class JiondongView extends View {private Paint mBackgroundPaint;private float mScal ...
- Android自定义View:ViewGroup(三)
自定义ViewGroup本质是什么? 自定义ViewGroup本质上就干一件事--layout. layout 我们知道ViewGroup是一个组合View,它与普通的基本View(只要不是ViewG ...
最新文章
- OpenAI 开放 GPT-3 微调功能,让开发者笑开了花
- Jquery zTree实例
- 企业CIO如何让IT部门成为价值中心
- boost::mp11::mp_partial_sum相关用法的测试程序
- vim QuickFix 窗口
- CSS3 Perspective
- pytorch实现常用的一些即插即用模块(长期更新)
- Sun公司网站上的Swing实例,想学Swing的不看后悔
- fiddler模拟低速网络
- 浙大 PAT b1017
- IntelliJ IDEA 远程deBug jar包
- scala从url或者其他数据源读取数据
- 五分钟学会安装电脑操作系统
- html编辑器怎么设置为excel,excel2013宏编辑器的设置方法教程
- 基于IBM Tivoli TSM系统构建某局备份系统实施方案
- python 删除pdf页面_删除PDF其中几页的方法
- 清华镜像源地址(国内下载python包必备地址)
- C++Primer 第10章 bind与迭代器
- web概念、B/C、C/S区别与优缺点以及网络通信三要素:IP、端口号、传输地址
- 北京住房公积金转杭州相关信息的整理,个人整理