由于项目需要应用程序中添加实时图线绘制(个人简介添加曲线显示除了看起来花哨一些意外我还真没赶脚有多大的实际意义)闲话少说,作为资深菜鸟级程序猿接到任务后马不停蹄的Google,度娘。。。。忍不住吐槽下:天朝上国为神马就容不下google呢,阿西吧以搜索时不时来个网页错误、无法访问。。。
好了!又说了这么一堆的闲话,接下来是绘图扫盲.........................(欢迎围观大神勿喷)
achartenginr:扫盲篇之引入jar包 #
AchartEngine的项目地址:http://code.google.com/p/achartengine/ 。在你使用aChartEngine之前首先你应该下载几个文件,如图:
下载地址http://code.google.com/p/achartengine/downloads/list
demo_source.zip里面当然是一些demo,后面我整理的demo也是根据这个demo包修改而成的;
javadoc.zip当然是一些文档;
achartengine-1.0.0.jar这个jar也就是你开发需要的jar包。
achartenginr:扫盲篇之基础绘制主要静态绘制
所谓静态绘制就是将固定的一组数据放入数据集合中,然后绘制出曲线。。
抛砖引玉小作总结:
1、声明 XYMutilpleSeriesDataset(数据集) XYMutilpleSeriesDataset(描绘器)全局变量的XYseries(存放绘制图的数据集)
2、获取seriesdata series.add(x, y); 将数据压入数据集中 dataset.addSeries(series);
3、设置绘制器样式风格 即设置seriesRenderer风格
4、通过ChartFactory.getLineChartView(contest,dataset,render)获得生成的图标,其实质是view.
在这个地方少做引申 就是涉及到如何设置生成图表位置大小的问题,只要在原先的XML布局文件中添加线性布局,然后将生成的view add进去即可
LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT))
感兴趣的童鞋顺带学学LayoutParams 用法
实例教程可以参考http://www.apkbus.com/forum.php?mod=viewthread&tid=20137(这帖子简单)
http://hi.baidu.com/lupingloveyou/item/2b668ff47e555749932af2b5(这帖子代码比较明朗 呵呵 个人觉着)
这张帖子。重申注意的是:XYMutilpleSeriesDataset 用于进行绘制的设置,添加的XYSeriesRender对象,用于定义绘制的点集合设置,注意数量要和XYMutilpleSeriesDataset,添加的XYseries一致!!! 不然的话就会报错:
achartenginr:扫盲篇之基础绘制主要动态态绘制
动态绘制是相比静态而言的,要实现不是将一堆放在那里的数据绘图,而是将不断输送过来的数据绘成图。
一下这篇文章对我影响很大,大家不妨看看,我的实现也基本于其雷同
http://blog.csdn.net/ykm0722/article/details/8106612
与它不同的是,他是每隔1s采集100数据绘制,而我是要将随机产生的数据实时的绘制出来
我的部分代码:
public class MainActivity extends Activity {
public static final int MESSAGE_READ = 1;
private XYMultipleSeriesRenderer render = new XYMultipleSeriesRenderer();
private XYMultipleSeriesDataset dataset =new XYMultipleSeriesDataset();
private static final String charttile = "XX指数";
private XYSeries series =new XYSeries(charttile);
private Context context;
private GraphicalView mChartView;
private LinearLayout llayout;
boolean isFirst = true;
// AchartEngine 生成折线图--获取数据源
private XYMultipleSeriesDataset getdataset(double x,double y)
{
series.add(x, y);
dataset.addSeries(series);
return dataset;//
}
// view重绘 这句很关键
mChartView.invalidate();
}
// 图表绘制点的设置
private XYMultipleSeriesRenderer setrender(){
XYSeriesRenderer xyrender=new XYSeriesRenderer();
xyrender.setColor(Color.BLUE);
xyrender.setPointStyle(PointStyle.TRIANGLE);
xyrender.isDisplayChartValues();
render.addSeriesRenderer(xyrender);
render.setChartTitle("XX曲线");
render.setXTitle("X");
render.setYTitle("Y");
render.setXAxisMin(-90);//设置X轴的最小值为0
render.setXAxisMax(90);//设置X轴的最大值为90
render.setYAxisMin(0);//设置Y轴的最小值为0
render.setYAxisMax(150);//设置Y轴最大值为150
render.setShowGrid(true);//设置是否在图表中显示网格
render.setXLabels(20); // 设置X坐标分成20份
render.setAxesColor(color.white);
return render;
}
,,,,,,,,,,,,,,,,,,,,,,,收工,,,,,,,,,,,,,,,,,,,,,,
特别鸣谢 网友always ❤ you 对我的帮助哈哈