关于修改 AchartEngine 源码的修改

来源:互联网 发布:淘宝开店认证在哪里 编辑:程序博客网 时间:2024/05/16 06:59

转载http://blog.csdn.net/kongbaidepao/article/details/12676155/

因为公司的这个项目是用 google 的第三方图标绘制工具  AchartEngine进行绘制的,

但是 因为最后 不满足测试 和需要 的 要求,需要重新按照别的要求来做,在查了很多资料 真心没有发现用来设置的,所以没有办法,还是要做,所以决心把源码下载下来看看能否实现。

下载下来后真心发现: 好吧。我要好好学英文了 = =

先简单说说人家要求的样子吧。

那张图在公司电脑上 = =,跟这个一样的,



反正就是 -1. (曲线,每个点是空心的  -   确切的说也不能算是空心的,因为他的背景是白色的,里面填充白色的,有带色的边  )

                  2.   需要修改下面的图例文字的位置,因为这个人家是写好跟着  XY 轴的0 走的

                  3.  X  Y轴的线太细了。需要加粗1点 = =  忍

 先上张 官方demo的图 -别的图不上了。只是说明问题。


 

好了,现在要解决2个问题。               1. 移动下面图例的文字(其实我真心觉得在左边挺好的)  2. 修改圆形的图点变成空心(类似= =)


1. 现在打开源码看看下。

   因为在写 这个图表的时候有个方法是设置这个图例文字大小的

[java] view plain copy
  1. renderer.setLegendTextSize(10);                    // 图例文字的大小--下面分类的字体大小  

这个是工程目录:


因为我的英文也不是很好嘛= =,所以就按照这个 名字去找了


(找的过程就不多说了)然后找到了这个文件下面的这个方法,一看一眼就知道了啦。 -  drawlegend (画图例) 所以肯定在这里设置啦。

至于你爱怎么设置就怎么设置。我  left + 90只是 提供一种方法

然后运行:



二  . 然后到了解决第2个问题,确实很头疼。

我首先想到的是 设置空心属性嘛, 直接画成空心的不就好了。(可是真心不是人家给的效果图就变成下边的样子了,后面的线条还会露出来)


找到 XYchart ,这种 XY轴的图标绘制(名字命的好,真心好找) 看到他的draw()




然后里面有个  drawSeries(这个顾名思义。就是画每条线嘛)然后看这个方法:




接下来就看到了 pointChart (画点ye,感觉离成功不远了,连接进去看)进到了:




然后看到 case:  一眼就看出来哦了

继续跟到  drawCircle里面去看看:


源码只有1句话(那就是 画点,)好了为了实现我的效果,那我就要开始对 paint进行设置了。对于渲染类shader我前面提到过了。

然后画完点,就去掉自己的 shader以免影响到别的(因为我没去掉看到了很恐怖的效果 = =)

然后效果图:(我渲染成了白内心,外面是线条颜色的圆圈,白里子是因为 我们的那个背景是白色的):


好了,圆圈变了。


三 , 现在要变 X Y 轴的 线条的粗细。

这个真心也找了半天,因为有时候动一出 ,很多地方就动了

,然后还有1个问题就是。原来项目里面的线是 折线图,然后项目是1个 linear.add() 这个折线图返回来的 View的

[java] view plain copy
  1. GraphicalView view= ChartFactory.getLineChartView(context, buildDataset(titles, x, values), renderer);//返回曲线图view  

然而根据测试和 需求提出的,那个根本就是要返回曲线图的 view

但是没有这个方法:


曲线图只给 返回1个 intent 跳进去啊= =,

这样的话,我就根据他的 ChartFactory 的类 添加了1个自己返回 曲线view的方法(这样就可以add到自己的layout里面了):


这样我就可以得到 曲线图的 view了进行调用,然后跟进去 GraphicalView 

看到了里面的1个 ondraw方法,那肯定就是开始绘画 view了

然后我更改了paint.的大小,随便点开1个= =, 就贴一张图吧。最起码知道位置找对了, XY 的大粗细确实变了


然后根据他里面的 draw方法又连接进到了(看到 drawBackage我高兴了,这画背景啊, 我就在drawBackage完后把画笔加粗清空了)


结果发现 Y X变细,说明 drawbackage就没有画xy和线条 


接下来继续找。

然后看到 drawpath 改变了画笔的大小,可以是可以, 但是有一些的 XY 会变粗, 并且连带点也会变粗,一些则是 线条会变很粗,错的

所以我就按照刚才的顺序,在drawBackage中既然没画XY, 继续到了 drawlegend(画图例,我在画完图例之后加粗画笔)



好了看效果图吧:

好了都变粗了,其他的肯定问题还是有的。需要把画笔的加粗清空,自己清吧= =


然后把整体的修改完运行成jar 放到工程里面:

再吐槽一下 设计这个界面的 需求,图没有截全就大概看个效果吧。



其实那些类  你都可以自己继承了以后,再改写。

我这里只是提供了一种方式,当时要的着急。

所以就基本跟给的效果图是一致的了。1. 下面的图例往中间放。 2. XY 加粗了1点点= =  3。曲线的样式

当然还能再基础上扩展, 比如X Y轴用提供的1张图片代替。因为 现在XY轴的样子确实是有局限性。


转载请保留地址谢谢。

0 0
原创粉丝点击