话不多说先看效果图
参考https://blog.csdn.net/s_best1987/article/details/8946759#
AChartEngine给我们提供了GraphicalVIEw这个类,可以灵活的在任何位置插入图表,非常的方便。
下面对相关类进行讲解:
GraphicalVIEw:图表控件,是一个基本类,也是一个容器控件,所有的图表都在此控件中呈现;
ChartFactory:工厂类,通过此类来构建不同的图表对象,比如lineChart(折线图)、CubelineChart(圆滑折线图)、PIEChart(饼图)等;
XYMultipleSerIEsDataset:数据集容器,在此类中存放多条曲线的数据集合
XYMultipleSerIEsRenderer:渲染器容器,此类初始化坐标系,网格,标题等,还用来存放多条曲线的渲染器
XYSerIEs:数据集,存放曲线的数据
XYSerIEsRenderer:渲染器,存放曲线的参数,比如线条颜色,描点大小等
好了 上代码:
linearLayout layout = (linearLayout)findVIEwByID(R.ID.chart); //生成图表 chart = ChartFactory.getTimeChartVIEw(this, getDateDemoDataset(), getDemoRenderer(), "MM/dd HH:mm"); layout.addVIEw(chart, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.FILL_PARENT));
private XYMultipleSerIEsDataset getDateDemoDataset() { dataset1 = new XYMultipleSerIEsDataset(); long value = System.currentTimeMillis();// try {// value = format1.parse("2020-03-11 00:00:00").getTime();// } catch (ParseException e) {// // Todo auto-generated catch block// e.printstacktrace();// } Date[] dd=new Date[nr]; for (int i = 0; i < nr; i++) { dd[i]=new Date(value+1000*1800*i); } Random r = new Random(); for (int i = 0; i < SERIES_NR; i++) { serIEs1 = new TimeSerIEs("Demo serIEs "); for (int k = 0; k < nr; k++) {// serIEs1.add(new Date(value+k*1000*24*3600), 20 +r.nextInt() % 10); serIEs1.add(dd[k], 20 +r.nextInt() % 10); } dataset1.addSerIEs(serIEs1); } Log.i(TAG, dataset1.toString()); return dataset1; }
private XYMultipleSerIEsRenderer getDemoRenderer() { XYMultipleSerIEsRenderer renderer = new XYMultipleSerIEsRenderer();// renderer.setChartTitle("实时曲线");//标题// renderer.setChartTitleTextSize(20); renderer.setAxisTitleTextSize(16); renderer.setAxescolor(color.BLACK); renderer.setLabelsTextSize(15); //数轴刻度字体大小 renderer.setLabelscolor(color.BLACK); renderer.setLegendTextSize(15); //曲线说明 renderer.setXLabelscolor(color.BLACK); renderer.setYLabelscolor(0,color.BLACK); renderer.setShowCustomTextGrID(true); // 设置X轴和Y轴网格是否显示. renderer.setGrIDcolor(color.WHITE);// LTGRAY); //网格颜色,灰色 renderer.setmarginscolor(color.BLUE); // 设置四边颜色 renderer.setBackgroundcolor(color.WHITE); //设置中间背景色// renderer.setShowLegend(true); renderer.setmargins(new int[] {20, 30, 30, 0}); XYSerIEsRenderer r = new XYSerIEsRenderer(); r.setcolor(color.RED); r.setChartValuesTextSize(15); r.setPointStyle(PointStyle.CIRCLE); r.setFillBelowline(true);// r.setFillBelowlinecolor(color.WHITE); r.setFillPoints(true); renderer.addSerIEsRenderer(r); renderer.setPanEnabled(true, true); renderer.setShowGrID(true); renderer.setYAxisMax(50); renderer.setYAxisMin(-20); return renderer; } final int nr = 48;
时间曲线图的横坐标为时间轴,对齐要相应的处理。
文件上传在审核。后续修改源码地址。
总结以上是内存溢出为你收集整理的AChartEngine实现Android实时时间变化曲线全部内容,希望文章能够帮你解决AChartEngine实现Android实时时间变化曲线所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)