自定义View简单折线图
来源:互联网 发布:it狂人第三季 编辑:程序博客网 时间:2024/05/29 09:26
主要的类
import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.util.Log;import android.view.View;/** * Created by Administrator on 2017/1/18. */public class LineChart extends View { private String[] XLabel={"1-14","1-15","1-16","1-17","1-18","1-19"};//X轴的刻度 private String[] YLabel={"","10","20","30","40","50"};//Y轴的刻度 private int[] datas={5,20,15,10,30,23};//数据 private int XPoint=50; //原点X轴坐标 private int YPoint=700; //原点Y轴坐标 private int XLength=600;//X轴长度 private int YLength=600;//Y轴长度 private int XScale=100;//X轴刻度的宽度 private int YScale=100;//Y轴刻度的宽度 public LineChart(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); Paint circlePaint = new Paint(); paint.setColor(Color.RED); circlePaint.setColor(Color.BLUE); paint.setAntiAlias(true); canvas.drawLine(XPoint,YPoint,XPoint+XLength,YPoint,paint);//X轴 canvas.drawLine(XPoint,YPoint,XPoint,YPoint-YLength,paint);//Y轴 //绘制箭头 canvas.drawLine(XPoint+XLength,YPoint,XPoint+XLength-6,YPoint-6,paint);//X箭头 canvas.drawLine(XPoint+XLength,YPoint,XPoint+XLength-6,YPoint+6,paint); canvas.drawLine(XPoint,YPoint-YLength,XPoint-6,YPoint-YLength+6,paint);//Y箭头 canvas.drawLine(XPoint,YPoint-YLength,XPoint+6,YPoint-YLength+6,paint); //绘制Y轴刻度 for (int i=0;i*YScale<YLength;i++){ canvas.drawLine(XPoint,YPoint-i*YScale,XPoint+5,YPoint-i*YScale,paint); canvas.drawText(YLabel[i],XPoint-20,YPoint-i*YScale+5,paint); } //绘制X轴刻度 for (int i=0;i*XScale<XLength;i++){ canvas.drawLine(XPoint+i*XScale,YPoint,XPoint+i*XScale,YPoint-5,paint); canvas.drawText(XLabel[i],XPoint+i*XScale-10,YPoint+20,paint); //画折线 if(i<datas.length-1) canvas.drawLine(XPoint+i*XScale,YCoord(datas[i]),XPoint+(i+1)*XScale,YCoord(datas[i+1]),paint); canvas.drawCircle(XPoint+i*XScale,YCoord(datas[i]),4,circlePaint);//每个数据对应的Y坐标 } } /** * 计算数据对应的Y坐标 * @param data * @return */ private int YCoord(int data) { Log.i("打印数据",YPoint-data*YScale/Integer.parseInt(YLabel[1])+""); return YPoint-data*YScale/Integer.parseInt(YLabel[1]); }}
效果预览图
0 0
- 自定义View简单折线图
- 自定义View--折线图
- 自定义View折线图
- 自定义View折线图
- 折线图 自定义折线图 自定义view
- 安卓自定义View实现简单折线图
- Android自定义View实现简单的折线图、柱状图
- 自定义View之折线图
- 自定义View,画折线图
- 自定义view—折线图
- 自定义view—折线图
- Android 自定义View 折线图
- 自定义view—折线图
- Android自定义简单折线图
- Android 自定义View,实现折线图
- Android 自定义View,实现折线图
- Android 自定义View -- 简约的折线图
- 自定义View-七日利率折线图
- 使用Terminal创建与进入目录
- ORA-28001: 口令已经失效
- 初学pyse
- 使用mm命令遇到的问题
- Hive自定义函数(UDF、UDAF)
- 自定义View简单折线图
- mq浅析
- 多个Notes文档中附件批量汇总到一个文档中
- 理解页面重构和回流
- IText实现对PDF文档属性的基本设置
- Android中常用方法的归纳集合总结(二)
- php适配器模式
- xx.net飞墙
- 深度学习笔记(0)——机器学习基本概念