简单的android折线图绘制

  

上图

简单的android折线图绘制

说到android的折线图,我就必须要说一下关于绘制视图的几个重要的工具,帆布画(布),油漆(画笔),路径(路径)。

,,画布,顾名思义就是用来作画的板子或者说是布。没有它就算有了画笔也是无从下手。当然我们可以通过画布的各种属性来设置画布,例如:

,,,

canvas.drawColor (Color.BLACK);//设置背景颜色为黑色

其他设置就自己去查了看api,这里不多讲了。

,,画,油漆笔,用来作画的笔,不管我们在画布上面绘制什么,都离不开画笔,只要用到画布的地方请带上画笔。和画布一样,画笔也可以设计他独特的属性,例如颜色呀,粗细呀虚实线呀什么的,这里也不多说了。

,,,道路路径,就像是我们小学时候用的尺子一样,如果要画一条直线就得沿着尺子的边缘话,这就是路径的功能,不过这里的路径没有那么必须,简单的线还是可以直接用颜料画出来的,画折线图用到路径的地方主要是画虚线,其实我也不是很明白为何必须用路径,不过如果直接用油漆+ PathEffect +坐标来画画出来就永远是直线了,大概因为虚线是一节节的画的吧。

,,上面简单的介绍了一下用到的工具,下面就讲讲我画折线图的一些思路吧。

,,首先,一个坐标图必然要有原点坐标,X, Y轴,绘制折线的基线表格,最后就是折线啦。

,,原点可以自己定义绘制在任何地方,我这里由于不知道手机屏幕的具体大小,怕绘制出来比较鸡肋,于是做了个屏幕自适应:


,,,,原点X坐标=边距(也就是距离边界的宽度,android的像素点是从屏幕的左上角开始的)

,,,,原点Y坐标=屏幕的高度,边距

,,,,X轴的长度=屏幕宽度- 2 *边距,

,,,,Y轴的长度=屏幕高度- 2 *边距

,,,,X轴的单位长度=,(屏幕宽度- 2 *边距)/(X轴所显示的标线数- 1),

,,,,Y轴的单位长度=(屏幕高度- 2 *边距)/(Y轴所显示的标线数- 1)

,,画图的时候各个点坐标的计算方法是:

,,,,Y轴坐标=(Y轴的单位长度/(Y轴1点显示的数字——原点Y轴显示的数字))*(数据的Y轴数据——原点数字)

,,,,X轴同理

这样整个折线图的画法就很清晰啦。下面直接上代码

,,,,


//,画表格   private  void  drawTable (Canvas 画布),{   Paint  Paint =, new 油漆();   paint.setStyle (Paint.Style.STROKE);   paint.setColor (Color.GRAY);   Path  Path =, new 路径();   PathEffect  effects =, new  DashPathEffect (new 浮动[],{,5、5日,5日,5,},,1);   paint.setPathEffect(影响);//,纵向线   for  (int 小姐:=,1;,小姐:*,Xscale  & lt;=, (this.getWidth(),安康;this.Margin);,我+ +),{   int  startX =, Xpoint  +,小姐:*,Xscale;   int  startY =, Ypoint;   int  stopY =, Ypoint 作用;(this.Ylabel.length 安康;1),*,Yscale;   path.moveTo (startX, startY);   path.lineTo (startX, stopY);   canvas.drawPath(路径,油漆);   }//,横向线   for  (int 小姐:=1;祝福;(Ypoint 安康;小姐:*,Yscale),祝辞=,this.Margin;,我+ +),{   int  startX =, Xpoint;   int  startY =, Ypoint 作用;小姐:*,Yscale;   int  stopX =, Xpoint  +, (this.Xlabel.length 安康;1),*,Xscale;   path.moveTo (startX, startY);   path.lineTo (stopX, startY);   paint.setColor (Color.DKGRAY);   canvas.drawPath(路径,油漆);   paint.setColor (Color.WHITE);   paint.setTextSize(时间/this.Margin  2);   canvas.drawText (this.Ylabel[我],this.Margin /, 4, startY   时间/+,this.Margin  4,油漆);   }   }
简单的android折线图绘制